Cette question a été soulevée de nombreuses fois, mais Visual Studio ne cesse de me défier.Visual Studio Erreurs de liaison. Ordre dans lequel MFC, CRT inclus?
Nous avons une application qui devrait être autonome, c'est-à-dire ne pas dépendre de bibliothèques tierces. C'est pourquoi nous construisons tout de manière statique en utilisant les indicateurs de génération de code MT(d)
. L'application dépend de Qt
, zlib
, OpenSSL
et DCMTK
. Toutes ces bibliothèques ont été construites en tant que bibliothèques statiques avec MT(d)
. L'application utilise également du code lié à MFC
, donc nous devons également faire un lien avec elle.
MFC est inclus via
#include <afxwin.h>
Je lis quelque part que cela devrait être le premier inclure dans chaque fichier, mais je ne sais pas s'il est vrai. Quoi qu'il en soit, la ligne n'est pas incluse dans tous les fichiers, seul un fichier l'inclut.
Voici les erreurs liées à Link:
Error 24 error LNK2005: "void __cdecl operator delete[](void *)" ([email protected]@Z) already defined in LIBCMTD.lib(delete2.obj) uafxcwd.lib
Error 22 error LNK2005: "void __cdecl operator delete(void *)" ([email protected]@Z) already defined in LIBCMTD.lib(dbgdel.obj) uafxcwd.lib
Error 23 error LNK2005: "void * __cdecl operator new[](unsigned int)" ([email protected]@Z) already defined in libcpmtd.lib(newaop.obj) uafxcwd.lib
Error 21 error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) already defined in LIBCMTD.lib(new.obj) uafxcwd.lib
Voici le linker output.
J'ai lu de nombreux threads sur de nombreux sites ainsi que ce article à partir de KB de MSDN. Mais ils ne m'aident pas, car ils continuent à dire que les librairies MFC devraient être liées avant CRT, mais je ne peux pas trouver un moyen de modifier l'ordre de liaison.
Toute aide est grandement appréciée.
Edit 1: en utilisant l'astuce de this thread permet de résoudre effectivement le problème, mais je veux toujours savoir ce qui ne va pas ici.
Edit 2: l'aide de Visual Studio 2008 SP1, Windows 7 et Qt 4.6.3
Quelle version de Visual Studio utilisez-vous? – karlphillip
visual studio 2008 sp 1 –