2011-04-19 14 views
13

Tengo una biblioteca compartida que se compila como de 32 bits. ¿Puedo usarlo desde una aplicación de 64 bits o también necesito compilar la biblioteca compartida como de 64 bits?Cargar biblioteca compartida de 32 bits desde la aplicación de 64 bits?

+1

¿Qué sistema operativo? Probablemente importe –

+0

Windows 7 y Red Hat Linux. – Brian

+1

@Paul: en realidad no debería importar. Suponiendo x86-64, el procesador en cualquier punto dado está en modo largo (64 bits), modo protegido (32 bits) o real (16 bits). Cuando se programa un hilo, el modo se establece para que coincida con el proceso, que solo puede ser uno de esos. Es una cuestión de cómo funciona x86/x86-64 en su núcleo. –

Respuesta

13

No, no puede cargar una biblioteca de 32 bits en una aplicación de 64 bits a través de medios convencionales.

Existen algunos trucos inteligentes como tener una aplicación de 32 bits que carga la biblioteca y exporta las funciones a través de una interfaz IPC, pero si tiene la opción de compilarla como de 64 bits, entonces eso es de lejos la mejor opción.

+0

Este truco ingenioso que mencionas aún carga la DLL en un proceso de 32 bits. ¿Conoces alguno de estos hacks que cargan la DLL de 32 bits en un proceso de 64 bits? –

+1

@John: nada que funcione. Por supuesto, puede hacer algo como asignar memoria en su proceso y leer manualmente el código binario del dll de 32 bits. Pero el procesador lo tratará como instrucciones de 64 bits que no funcionarán correctamente. Simplemente no se puede hacer con la arquitectura x86-64/x86. –

5

No se puede cargar dinámicamente o estáticamente una biblioteca de 32 bits desde una aplicación de 64 bits o viceversa.

Hay una serie de soluciones temporales que soy consciente de:

  1. hacer una versión de 64 bits de la DLL
  2. hacer una versión de 32 bits de la aplicación
  3. Introducir una Objeto proxy COM (también llamado sustituto) como intermediario de comunicación. Described here.
  4. Host la DLL en un EXE independiente (32 bits) y el uso de una técnica de IPC

Hay una serie de técnicas de comunicación entre procesos (IPC). Aquí están algunos ejemplos:

+2

+1, aunque la memoria compartida, archivos compartidos, tablas de bases de datos, RFC, COM y pantalla de video faltan en la lista de técnicas de IPC;) en otras palabras: sugiero "Hay una cantidad de comunicación entre procesos (Técnicas de IPC): "agrega una frase" algunos de los cuales son: ". – TheBlastOne

Cuestiones relacionadas