2012-02-01 14 views
7

Una máquina que tiene MSVBVM60.dll ver 6.0.97.82, por ejemplo OLD. Otra máquina que tiene MSVBVM60.dll ver 6.0.98.15, decir NUEVO. Exe creado a partir NUEVO máquina se cuelga en la línea new ADODB.Connection sobre las donaciones vieja máquina siguiente errorExe Crash En ADODB.Conexión con "La clase no admite automatización"

en tiempo de ejecución error '430': clase no admite automatización o no apoyo que se espera interfaz

Como llegar deshacerse de esto? Mi objetivo principal es ejecutar el exe en la máquina VIEJA mientras está creado en la máquina NUEVA. Para evitar la configuración molesta de la máquina NUEVA, traté de anular el registro de la versión anterior y registrar la versión más nueva en la máquina VIEJA, pero sin éxito. ¿Hay otros dll (s) utilizados por ADODB.Connection o tengo que hacer algo totalmente diferente para deshacerme de esto?

+0

¿Qué sistemas operativos son sus nuevos y viejos equipos que ejecutan? – UnhandledExcepSean

Respuesta

11

Esto no tiene nada que ver con las versiones de tiempo de ejecución de VB y más con las bibliotecas ADO (como alude la línea de error) y fue causada por la compatibilidad de Microsoft en sus bibliotecas ADO.

KB article 2517589 explica por qué y la solución que es esencialmente para recompilar contra la compatibilidad typelib.

+0

Seguí todos los pasos en el artículo de KB dado, todo salió perfectamente bien, construí el exe y se bloqueó de nuevo. Por favor refiérase a mis comentarios bajo la respuesta de Jon Egerton – bjan

+0

Siguiendo todos los pasos de mi máquina de compilación y recompilando, me arregló hace unos días. – Deanna

+0

Si su proyecto aún hace referencia a "Biblioteca de objetos de datos de Microsoft ActiveX XXX", seguirá construyéndose en comparación con la versión incompatible. DEBE eliminar esa referencia y volver a compilar contra la "Biblioteca BackCompat de Microsoft ActiveX Data Objects 6.0". – Deanna

0

Puede ser más fácil parchear todo el tiempo de ejecución VB6 en la máquina ANTIGUA - puede obtener una descarga desde here.

El tiempo de ejecución de VB6 se distribuye como un paquete, por lo que no recomendaría simplemente insertar ciertos dlls por su cuenta.

También recomendaría comprobar que las dos máquinas que está ejecutando están utilizando la misma versión de MDAC, en particular que la máquina OLD tiene la versión instalada a la que se hace referencia en su proyecto.

+0

No quiero parchar la máquina VIEJA ya que estas son máquinas cliente. Sí, las versiones de MDAC son diferentes, pero, estoy ejecutando VS6.0 y VS2010 en una máquina NUEVA al mismo tiempo. ¿Pueden ambas versiones de MDAC instalarse en la misma máquina? – bjan

+0

Sí, está bien tener muchas versiones. En VB6 podría tener las versiones de MDAC 2.1 a 2.6 que podrían instalarse (todas al mismo tiempo). La versión utilizada por su proyecto debe existir en el cliente. –

+1

También tenga en cuenta que Vista + tiene versiones específicas de los tiempos de ejecución de VB que no puede reemplazar y NO DEBE instalar en una versión anterior de Windows. cualquier cosa antes Vista debería usar los tiempos de ejecución SP6. – Deanna

0

La respuesta aceptada no funcionó para mí. Los siguientes pasos sí.

  1. Herramientas -> Referencias
  2. Deseleccionar:
    • Microsoft ActiveX Data Objects 6.1 Library
    • Microsoft ActiveX Data de registros 6.0 Biblioteca
    • Microsoft ADO Ext. 6.0 para DDL y seguridad
  3. Comprobar:
    • Microsoft ActiveX Data Objects 2.8 Library
    • Microsoft ActiveX Data de registros 2.8 Biblioteca
    • Microsoft ADO Ext. 2.8 para DDL y seguridad
Cuestiones relacionadas