2009-08-21 38 views
26

Buscando una directiva de preprocesador en C# para la importación de DLL en función de si el ejecutable es de 64 bits o 32 bits:preprocesador en C# para importar basa en la plataforma

#if WIN64 
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)] 
#else 
[DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)] 

Respuesta

38

Esto es lo que necesita hacer.

Primero, entre en Project-><project name> Properties... y vaya a la pestaña Construir.

En el cuadro de texto etiquetado como "símbolos de compilación condicional", agregue WIN32 para su plataforma x86 (seleccionable en la parte superior del cuadro de diálogo) y WIN64 para su plataforma x64. Entonces guarda.

Tenga en cuenta que si tiene uno para "AnyCPU", es probable que desee eliminar esa plataforma por completo, ya que no será seguro.

continuación, entrar en la fuente, y escribir esto:

#if WIN64 
    [DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)] 
#else 
    [DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)] 
#endif 

Tenga en cuenta que cuando se ve la fuente, una de las líneas se verá como se ha comentado, en el que toda la línea está ocupada una fuente gris. Esta línea es la de la "otra plataforma". Si selecciona la plataforma en la barra de herramientas, notará que la coloración de la sintaxis sigue el mismo objetivo.

Por supuesto, después de volver a leer mi respuesta, me doy cuenta de que no es necesario poner WIN32 en la lista de símbolos condicionales ya que no se usa, pero podría ser útil hacer otros lugares #if en WIN32 en lugar de 64.

5

que tendrá que añadir un símbolo de compilación condicional para cada plataforma objetivo en las propiedades de su proyecto, en la pestaña Generar. Simplemente agregue un símbolo para la Plataforma determinada según lo determinado por el menú desplegable Plataforma en la parte superior del formulario de compilación. Cambiar la plataforma le permitirá agregar diferentes símbolos que se aplican solo a una construcción para esa plataforma.

1

No hay nada que yo sepa. Sin embargo, es simple definir una constante de compilación personalizada. Si está utilizando Visual Studio, cree configuraciones de compilación diferentes para las versiones de 32 bits y 64 bits utilizando Configuration Manager. A continuación, abra las propiedades del proyecto y vaya a la pestaña Generar e ingrese un nombre descriptivo en el cuadro de texto de símbolos de compilación condicional para cada configuración de compilación. Luego puede hacer referencia a las constantes de compilación en el código.