Récemment, alors que je travaillais sur VC 6.0, j'ai rencontré une erreur très ennuyeuse à plusieurs endroits. L'erreur suivante se produit : Liaison... nafxcwd.lib(afxmem.obj) : erreur LNK2005 : "void * __cdecl Operator new(unsigned int)" (??2@YAPAXI@Z) déjà défini dans LIBCMTD.lib( new. obj) nafxcwd.lib(afxmem.obj) : erreur LNK2005 : "void __cdecl Operator delete(void *)" (??3@YAXPAX@Z) déjà défini dans LIBCMTD.lib(dbgdel.obj) Debug/DCap exe : erreur fatale LNK1169 : un ou plusieurs symboles définis plusieurs fois trouvés Solution : Pour une telle erreur, il est évident que les deux bibliothèques liées fournissent des fonctions portant le même nom. Mais bien sûr, il n’est pas possible d’ignorer directement LIBCMTD.lib, car il s’agit d’une bibliothèque C. La raison pour laquelle ce problème se produit est que la bibliothèque MFC est en conflit avec la bibliothèque C et que l'ordre dans lequel elles sont liées doit être défini, c'est-à-dire d'abord nafxcwd.lib, puis LIBCCMTD.lib. Mais les deux sont des bibliothèques par défaut, alors comment définir leur ordre ? Solution : ignorez-les d'abord, puis ajoutez-les également. C'est-à-dire : Saisissez : nafxcwd.lib libcmtd.lib dans Ignorer les bibliothèques sur l'onglet Lien, puis saisissez : nafxcwd.lib libcmtd.lib dans Modules Objet/bibliothèque sur le même onglet. De cette façon, l’ordre dans lequel ils sont ajoutés devient l’ordre que nous sommes obligés de définir. ?
Développer