43 votes

Aide avec l'erreur Linker LNK2038!

J'essaie de porter une petite application à moi de Win XP et VS 2005 vers Win 7 et VS 2010.

L'application se compile et s'exécute sans problème en mode débogage, mais 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
 

Le pire, c'est que je ne sais pas par où commencer ...

Toute aide sera fortement appréciée.

40voto

Alex Budovski Points 8932

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.

L' 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)

25voto

Thomas Points 121

J'ai eu la même erreur. Dans mon cas, la solution est simple: j'avais un projet A en fonction d'un autre projet B. B avait une définition de préprocesseur _DEBUG en mode débogage et A n'en avait pas.

Ajoutez simplement _DEBUG au projet A (projet-> propriétés-> c ++ -> préprocesseur-> définitions de préprocesseur) et vous avez terminé.

6voto

Art Points 31

Cela peut également être dû à la définition de la définition du préprocesseur _HAS_ITERATOR_DEBUGGING=0 dans le projet B et non dans A où A produit une bibliothèque utilisée par B.

4voto

Roman Bober Points 21

Mon problème était que le projet dépendant utilisait "Utiliser un jeu de caractères multi-octets"
sous Generl -> Jeu de caractères. tandis qu'un autre projet avait une valeur "No Set"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X