Comment savoir si une dll est 32bits ou 64bits ?

Point important pour vos développements natifs ou pour l’utilisation de composants COM sur plateformes x64 :

Un processus 64bits peut charger seulement des dlls 64bits. De la même manière, un processus 32bits peut charger seulement des dlls 32bits.

Ceci peut paraitre trivial comme affirmation, mais cela a son importance car un processus 64bits ne pourra donc pas charger de dll 32bits. L’inverse n’est pas possible non plus.

Voici la référence : https://msdn.microsoft.com/en-us/library/aa384231(VS.85).aspx

 

Ok, d’accord… Et pour la vérification, comment puis-je savoir si une dll est compilée en 32 ou 64 ?

Simplement avec l’outil DumpBin livré avec Visual Studio. Vous pouvez le lancer directement à partir de la ligne de commande Visual Studio 2008.

VisualStudioCommandPrompt

 

Par exemple :

dumpbin "C:\Windows\System32\inetsrv\asp.dll" /HEADERS

dumpbin

 

dumpbin "C:\Windows\System32\inetsrv\asp.dll" /HEADERS | findstr "(x64)"

dumpbinfindstrx64

 

dumpbin "C:\Windows\SysWOW64\inetsrv\asp.dll" /HEADERS | findstr "(x86)"

dumpbinfindstrx86

Ca peut servir :-)

Bye,

Sebastien.