L'éditeur de liens d'erreur LNK2038: l'inadéquation détecté en mode Release
Je suis en train de le port d'une petite application de la mine à partir de Win XP et VS 2005 pour Win 7 et VS 2010.
L'application compile et fonctionne bien en mode Débogage, cependant en mode Release, j'obtiens l'erreur suivante:
pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj
Où dois-je commencer à vérifier?
- Avez-vous n'avez qu'un "nettoyage" en premier?
- Oui, j'ai essayé ça aussi..
- Cela se produit lorsque certains de vos projets sont en cours de compilation en mode Debug, et certains dans le Communiqué. Assurez-vous que tous sont dans le même mode.
- D'ailleurs, j'ai fait une nouvelle version et il N'a résoudre le problème, donc si certains en passant lecteur n'a pas encore: Donner un coup de feu.
Vous devez vous connecter pour publier un commentaire.
Votre application est en cours de compilation en mode release, mais vous êtes de se lier à la version de débogage de PCRE, qui avait /MTd (ou similaire) ensemble, ce qui provoque le décalage dans itérateur niveau de débogage dans le CRT.
Recompiler PCRE en mode release pour correspondre à votre propre application.
La
detect_mismatch
pragma dans VS 2010 est quelles sont les causes de cette erreur d'être émis.Voir http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (recherche de _ITERATOR_DEBUG_LEVEL)
J'ai eu le même message d'erreur. Dans mon cas, la solution est simple: j'ai eu un projet d'Une fonction sur un autre projet de B. B avait une définition de préprocesseur _DEBUG en mode debug et Une n'a pas.
Juste ajouter _DEBUG pour Un projet(projet->propriétés->c++->préprocesseur->définitions de préprocesseur) et vous avez terminé.
NDEBUG
défini dans l'une et pas l'autre.Mon problème est que dépendant de projet utilisés "Utilisation Multi-Byte Character Set"
en vertu de Generl-->jeu de Caractères. tout autre projet avait "Pas de Jeu" valeur
Cela peut aussi être causée par le réglage de la définition de préprocesseur
_HAS_ITERATOR_DEBUGGING=0
dans le projet B et pas dans Un cas où Un produit d'une lib utilisée par B.