Je construis un projet dans Visual C++ 2008, qui est un exemple d'application MFC pour une bibliothèque de classes C++ statique que j'utiliserai bientôt dans mon propre projet. Lors de la construction de la configuration de débogage, je reçois ce qui suit:Pourquoi la bibliothèque MSCVRT génère-t-elle des conflits au moment de la liaison?
avertissement LNK4098: defaultlib 'MSVCRT' est en conflit avec l'utilisation d'autres bibliothèques; utilisation/NODEFAULTLIB: bibliothèque
Après avoir utilisé l'option recommandée (en ajoutant « msvcrt » au champ « Ignorer la bibliothèque spécifique » dans les paramètres de l'éditeur de liens de projet pour la configuration de débogage), les liens du programme et fonctionne très bien. Cependant, j'aimerais savoir pourquoi ce conflit s'est produit, pourquoi dois-je ignorer une bibliothèque critique, et si je dois m'attendre à des problèmes plus tard, si j'ajoute l'ignorer, ou ce qui arrive si je ne le fais pas (parce que le programme construit quand même).
En même temps, la configuration de sortie met en garde contre:
avertissement LNK4075: ignorant '/ EDITANDCONTINUE' en raison de '/ OPT: ICF' spécification
avertissement LNK4098: defaultlib conflits 'MSVCRTD' avec l'utilisation de autres bibliothèques utilisation/NODEFAULTLIB: bibliothèque
Je devine que le suffixe « D » signifie que c'est la version de débogage de VC++ runtime, aucune idée pourquoi ceci se sert cette fois-ci. Quoi qu'il en soit, en ajoutant « msvcrtd » à l'ignorer champ provoque beaucoup d'erreurs de liaison de la forme:
erreur LNK2001: symbole externe non résolu __imp___CrtDbgReportW
Toute idée très appréciée.
J'ai sélectionné/MDd dans les deux configurations et les avertissements ont disparu, supposons que la bibliothèque a été construite avec la version de débogage de la RT. Je me demandais toujours pourquoi MSVCRT était la valeur par défaut pour la construction Debug, et MSVCRTD pour la version. Semble-moi la valeur par défaut devrait être MSVCRTD pour les deux? – neuviemeporte
Peut-être que c'est une faute des développeurs de la bibliothèque. Le débogage ne devrait être utilisé que pour les versions de débogage - il est nettement plus lent. – sharptooth
Également eu ce problème, Merci qui a aidé. –