2011-10-07 24 views
6

¿Es posible configurar el compilador de modo que compile el archivo ejecutable/DLL para x86 y x64? Quiero decir, un archivo adecuado para ambas plataformas.Compilación para x86 y x64

Solo conozco una forma de elegir las plataformas por separado, pero quiero ambas.

¿Es posible?

Respuesta

19

El ejecutable x86 es totalmente compatible con el host x64. P.ej. cualquier EXE que compile en el modo de 32 bits se ejecutará sin problemas en 32-bit y host de 64 bits. Si no sabe por qué necesita un ejecutable de 64 bits, probablemente no lo haga, por lo que el ejecutable de 32 bits solo será suficiente.

Sin embargo, con las DLL es una cuestión diferente. La arquitectura de la DLL (32 bits o 64 bits) debe coincidir con en el ejecutable donde se va a usar la DLL. P.ej. si está escribiendo una extensión de Explorer para Windows x64, explorer.exe va a ser de 64 bits, por lo que su archivo DLL también debe ser de 64 bits; de lo contrario, no se podrá cargar.

No hay forma de combinar dos arquitecturas diferentes en una DLL o EXE en Windows. Por lo tanto, necesitará dos DLL si necesita admitir hosts de 32 bits y de 64 bits.

+0

En cuanto a la combinación de 32 bits y 64 bits en un ejecutable, podría hacerlo con un autoextractor de 32 bits que detectaría la plataforma y extraería/ejecutaría el EXE correcto para la plataforma actual. Sin embargo, esto no tendría ningún beneficio real sobre dos ejecutables. –

+6

@haimg: un EXE de 32 bits puede ejecutarse en un sistema Windows de 64 bits solo si está instalado el componente WOW64. En las primeras versiones de Windows de 64 bits, WOW64 era un componente obligatorio, pero a partir de Windows Server 2008 R2, ahora WOW64 es opcional, por lo que puede o no instalarse. –

+0

@ RemyLebeau-TeamB: Punto válido. Sin embargo, ¿alguna vez vio un sistema de producción real con WOW64 desinstalado? No me puedo imaginar que fuera del ámbito de los sistemas integrados ... – haimg

Cuestiones relacionadas