Comment obtenir les fichiers d’en-tête WTTLog.lib et wttlogger.h pour la version 64 bits de WTTLog.DLL

Ceci est en cours pour le thread ” Erreur de symbole externe non résolue se produisant uniquement en mode 64 bits et non en version 32 bits “.

J’ai un code VC ++ (construit avec VS2008), qui utilise certaines bibliothèques statiques (fichiers * .lib liés statiquement pendant la compilation).

Pour faciliter la compréhension, référons mon code EXE sous le nom “AAA.EXE” et les fichiers lib sous le nom “A.lib”, b.lib et LOGGER.lib (la bibliothèque à l’origine de l’erreur ci-dessous).

Le code AAA.EXE et le code des bibliothèques statiques (LOgger.lib) sont générés à l’aide de VS2008.

Je vois que mon “AAA.EXE” fonctionne correctement en version 32 bits, mais affiche les erreurs ci-dessous de l’éditeur de liens lorsque AAA.EXE est construit en mode 64 bits.

Encore une fois copier l’erreur de l’éditeur de liens pour une référence rapide:

Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall CWTTLogger::CWTTLogger(void)" (__imp_??0CWTTLogger@@QAE@XZ) 1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CWTTLogger::~CWTTLogger(void)" (__imp_??1CWTTLogger@@UAE@XZ) 1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::CreateLogDevice(unsigned short *,long *)" (__imp_?CreateLogDevice@CWTTLogger@@QAEJPAGPAJ@Z) 1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::StartTest(unsigned short *,long)" (__imp_?StartTest@CWTTLogger@@QAEJPAGJ@Z) 1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::EndTest(unsigned short *,unsigned long,unsigned short *,long)" (__imp_?EndTest@CWTTLogger@@QAEJPAGK0J@Z) 1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __cdecl CWTTLogger::Trace(unsigned long,long,...)" (__imp_?Trace@CWTTLogger@@QAAJKJZZ) 1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::CloseLogDevice(unsigned short *,long)" (__imp_?CloseLogDevice@CWTTLogger@@QAEJPAGJ@Z) 1>C:\Users\User1\Documents\XYZ\Code\64bit\aaa.exe: fatal error LNK1120: 7 unresolved externals 

CWTTLOgger est ici la classe “wttlogger.h” fournie par Microsoft.
Logger.lib est ma bibliothèque personnalisée sur laquelle j’utilise Microsoft WTTLog.DLL et le fichier d’en-tête correspondant “wttlogger.h”.

J’ai compris la cause première de cette erreur de l’éditeur de liens. Le code de bibliothèque statique Logger.lib utilise Microsoft WTTLog.DLL en appelant la fonction dans ce WTTLog.DLL à partir du fichier d’en-tête “wttlogger.h”.

Désormais, ces appels lorsqu’ils sont appelés dans AAA.exe 32 bits (liés à la bibliothèque statique Logger.lib) fonctionnent correctement (erreurs de l’éditeur de liens). Mais lorsque AAA.EXE 64 bits (lié à Logger.lib 64 bits) appelle les fonctions de WTTLog.DLL, il génère des erreurs dans l’éditeur de liens.

Il est très clair que les bibliothèques WTTLog.DLL / WTTLog.lib ne sont pas en 64 bits ou que le fichier d’en-tête de cette bibliothèque “wttlogger.h” ne correspond pas à la définition de la bibliothèque.

J’ai trouvé le WTTLog.DLL pour 64 bits dans Windows DDK dans “C: \ WinDDK \ Win8-RTM \ Tools \ x64 \ WTTlog.dll”. Corrigez-moi si j’ai tort, s’il-vous plait.

Mais où puis-je trouver le fichier d’en-tête correspondant à ce Wttlog.DLL 64 bits et la bibliothèque statique correspondant à cette DLL “WTTLog.DLL”. ??