2009-08-21 7 views
26

Alla ricerca di una direttiva del preprocessore in C# per l'importazione dll a seconda che l'eseguibile è a 64 bit o 32 bit:preprocessore in C# per l'importazione basato su piattaforma

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

risposta

38

Ecco cosa è necessario fare.

Innanzitutto, vai su Project-><project name> Properties... e vai alla scheda Costruisci.

Nella casella di testo denominata "Simboli di compilazione condizionale", aggiungere WIN32 per la piattaforma x86 (selezionabile nella parte superiore della finestra di dialogo) e WIN64 per la piattaforma x64. Quindi salva.

Si noti che se si dispone di uno per "AnyCPU", probabilmente si desidera rimuovere completamente tale piattaforma, in quanto non è sicuro.

Poi, vai nella fonte, e scrivere questo:

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

Si noti che quando si visualizza l'origine, una delle linee sarà simile è stata commentata, in quanto l'intera linea è in un carattere grigio. Questa linea è quella per "l'altra piattaforma". Se selezioni la piattaforma nella barra degli strumenti, noterai che la colorazione della sintassi segue l'esempio.

Ovviamente, dopo aver riletto la mia risposta, noto che in realtà non è necessario inserire WIN32 nell'elenco dei simboli condizionali in quanto non è utilizzato, ma potrebbe essere utile in altri posti fare un #if su WIN32 invece di 64.

5

dovrete aggiungere un simbolo compilazione condizionale per ogni piattaforma di destinazione nelle proprietà del progetto, nella scheda Costruisci. Aggiungi semplicemente un simbolo per la piattaforma indicata come determinato dal menu a discesa Piattaforma nella parte superiore del modulo di costruzione. Cambiare piattaforma ti permetterà di aggiungere simboli diversi che si applicano solo a una build per quella piattaforma.

1

Non c'è nulla di costruito di cui io sia a conoscenza. Tuttavia, è semplice definire una costante di compilazione personalizzata. Se si utilizza Visual Studio, creare configurazioni di compilazione diverse per versioni a 32 bit e 64 bit utilizzando Configuration Manager. Quindi apri le proprietà del progetto e vai alla scheda Build e inserisci un nome descrittivo nella casella di testo dei simboli di compilazione condizionale per ogni configurazione di build. Quindi puoi fare riferimento alle costanti di compilazione nel codice.