Servidor Com de 32 bits en el sistema de 64 bits

Desarrollé un servidor Com y en Windows XP de 32 bits. Para probar el Com Server, creé un Cliente con C # para llamar a las Funciones a través de Interop. Todo funciona bien, pero ahora necesito que ComServer se ejecute en un sistema Windows 7 de 64 bits. Llevé el ComServer DLL y el C # EXE a la computadora de 64 bits, registré el ComServer DLL con regsrv32 y comencé el progtwig C #. Cuando intenté acceder a una función de ComServer, lo único que obtengo es el error:

System.Runtime.InteropServices.COMException (0x80040154): Muere COM-Klassenfactory für die Komponente mit CLSID {BA4D7F46-A47E-4CB9-A153-2B4657C4DD29} konnte aufgrund des füfend en el caso de un partido en el parque de animales de la propiedad.

en inglés:

System.Runtime.InteropServices.COMException (0x80040154): El COM-Classfactory para el Componente con el CLSID {BA4D7F46-A47E-4CB9-A153-2B4657C4DD29} no pudo llamarse debido al Error: 80040154.

¿Qué está mal aquí? ¿No es posible llamar a una DLL de 32 bits en un sistema de 64 bits? En caso afirmativo, ¿cómo funcionan todos los demás progtwigs de 32 bits?

saludos camelord

No puede cargar una biblioteca de 32 bits en un proceso de 64 bits y viceversa: la biblioteca y el proceso deben ser del mismo bit.

La mejor solución es obtener una versión de 64 bits de la biblioteca del servidor COM. Si eso no es posible (lo cual es bastante habitual) tiene dos opciones:

  • haga que el progtwig consumidor sea de 32 bits (es probable que tenga que cambiar el destino de “Cualquier CPU” a “x86” en Visual Studio)
  • forzar el servidor COM en un proceso sustituto (use COM + para eso).

En el primer caso, el progtwig y el servidor COM son de 32 bits, por lo que la biblioteca del servidor COM se carga bien. En el segundo caso, COM + crea un proceso de sustitución de 32 bits y carga la biblioteca en él, su progtwig se comunica con ese proceso a través de RPC, por lo que no le importa la diferencia de bits.

Ambas opciones tienen inconvenientes. En el primer caso, hace que su progtwig sea de 32 bits, incluso en sistemas de 64 bits. En el segundo caso se encuentran los gastos generales debido a las comunicaciones entre procesos.

Desde aqui

Utilice corflags con el modificador / 32bit + para que la aplicación se ejecute en modo de 32 bits

Montaje de CorFlags.exe [opciones]