2011-12-28 27 views
8

Así que hace algún tiempo estaba investigando un problema que sabía que vendría pronto. Tenemos una DLL que enlaza a versiones de 32 bits de cierta biblioteca. No hay disponible una versión x64 de esta biblioteca y no tenemos opciones prácticas para reemplazarla.Utilizando una DLL de 32 bits en un proceso de 64 bits a través de COM

Cuando realizado esta investigación inicial he encontrado un artículo o dos que describe un método por el cual un proceso de 64 bits puede utilizar un 32-bit DLL (Windows) a través de un "servidor" COM. Desafortunadamente perdí los enlaces que había guardado y ahora he estado buscando durante más de una hora sin suerte.

¿Alguien está familiarizado con el proceso que estoy describiendo? No puedo recordar qué encantamiento mágico utilicé para obtener el resultado correcto en una búsqueda y, por supuesto, ahora es el tiempo de implementación. Gracias de antemano por cualquier ayuda que ustedes puedan ofrecer, continuaré buscando mientras tanto.

+0

supongo que se puede encontrar sus enlaces hacia atrás buscando en Google "sustitutos COM" y " Alojamiento COM + ". –

+0

@HansPassant: Esa era la palabra que necesitaba. Gracias. –

+0

(Principalmente para que otras personas se tropiecen con la respuesta) Tenga en cuenta que hacer esto implica la recopilación de datos entre procesos, lo que puede ser costoso; no es una panacea que corrige automáticamente * todos * los problemas. – snemarch

Respuesta

5

esto puede no ser suficiente, pero podría empezar: Process Interoperability

En Windows de 64 bits, un servidor COM fuera de proceso de 32 bits puede comunicarse con un cliente de 64 bits, y un servidor COM de 64 bits fuera de proceso puede comunicarse con un cliente de 32 bits. Por lo tanto, si tiene una DLL de 32 bits que no es compatible con COM, puede envolverla en un servidor COM fuera de proceso y usar COM para ordenar llamadas desde y hacia un proceso de 64 bits.

Y Accessing 32-bit DLLs from 64-bit code

Migración de aplicaciones Windows de 32 bits a una máquina de 64 bits puede ser problemático si usted tiene DLL de 32 bits que no se puede volver a escribir. Mike Becker se muestra cómo se puede acceder a los archivos DLL de 32 bits de código de 64 bits utilizando una función de mecanismos IPC ...

+0

Y ese era el enlace que estaba buscando. Gracias Señor. –

+0

De nada. He tenido el segundo enlace marcado cuando lo necesito :) – crashmstr

3

Client of Out-of-process Local Server es un ejemplo de ejecución de un COM fuera de proceso. Si está ejecutando un servidor COM fuera de proceso, su cliente puede ser de 64 bits y el servidor de 32 bits.

Cuestiones relacionadas