erreur LNK2038: l'inadéquation détecté pour "_ITERATOR_DEBUG_LEVEL': la valeur '0' ne correspond pas à la valeur '2' dans la main.obj
J'ai lu beaucoup de solutions à mon problème mais rien aidé. J'ai essayé de les nettoyer, de les reconstruire. Réinstallé visual 2010 et changer de professionnel à l'ultime. Mais encore, je ne sais pas pourquoi j'ai cette erreur.
Mon projet ressembler à ceci:
1 Exe Solution pour tester ma bibliothèque statique.
1 Dll Solution statique de la bibliothèque.
Le Code qui est ensuite converti en fichier dll à l'aide de la fonction à partir du 1 lib appelé ClassificationFramework. J'ai fourni cette lib que les en-têtes et du rpc, donc en gros le code source. Dans Exe solution que j'ai lié ma bibliothèque généré + quelques autres libs pour l'exécuter + ClassificationFramework.dll. Tout fonctionne bien lorsque j'utilise la Libération, mais lorsque je change de Debug (parce que je veux debug quelques trucs, je suis fatigué de sauter le débogueur en mode release) j'obtiens ceci:
2>Link:
2> ClassificationFramework.lib(SampleClass.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
2>ClassificationFramework.lib(SampleClass.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>ClassificationFramework.lib(SampleNamesSet.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>ClassificationFramework.lib(SampleSet.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>ClassificationFramework.lib(DirectoryReader.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
2>C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Debug\Tester.exe : fatal error LNK1319: 4 mismatches detected
Quand je construis dans la Version j'ai aussi reçu ces avertissements:
1>Link:
1> Generating code
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(101): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because ptimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\directoryreader.cpp(30): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xstring(1589): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\samplenamesset.cpp(226): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\directoryreader.cpp(60): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\samplenamesset.cpp(199): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\sampleset.cpp(27): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\samplenamesset.cpp(59): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1> Finished generating code
1>ClassificationFramework.lib(SampleSet.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(SampleSet.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1>ClassificationFramework.lib(SampleNamesSet.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(SampleNamesSet.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1>ClassificationFramework.lib(SampleClass.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(SampleClass.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1>ClassificationFramework.lib(DirectoryReader.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(DirectoryReader.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1> Tester.vcxproj -> C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\Tester.exe
J'ai trouvé que le Débogueur saute à cause d'un mauvais chemin d'accès aux fichiers pdb.
'Tester.exe': Loaded 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Work\Release\Tester.exe', Symbols loaded.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'Tester.exe': Unloaded 'C:\WINDOWS\SysWOW64\kernel32.dll'
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\OpenCV2.2\bin\opencv_core220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvcp100.dll', Symbols loaded.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvcr100.dll', Symbols loaded.
'Tester.exe': Loaded 'C:\OpenCV2.2\bin\opencv_highgui220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\user32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\secur32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\ole32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.4770_x-ww_A689AB02\comctl32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\avifil32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\winmm.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msacm32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvfw32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\shell32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\avicap32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\version.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\OpenCV2.2\bin\opencv_imgproc220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\imm32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\lpk.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\usp10.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\WinSxS\wow64_Microsoft.Windows.Common- Controls_6595b64144ccf1df_6.0.3790.4770_x-ww_8D2E3180\comctl32.dll', Cannot find or open the PDB file
The program '[4984] Tester.exe: Native' has exited with code 0 (0x0).
Quand je vais à Debug->Windows->Modules je vois qu'il ne peut pas trouver ces fichiers pdb ou quelque chose. Comment je peux lui dire que ces fichiers sont ici, ici et ici? J'ai essayé d'exécuter MSvisual en tant qu'administrateur, mais il na pas aider. J'ai utilisé microsoft serveur pour charger des fichiers pdb, mais aussi na pas aider.
Vous devez vous connecter pour publier un commentaire.
Dans VS2010 itérateur niveau de débogage par défaut 2 en debug et il est désactivé dans le communiqué. L'un des dll que vous utilisez probablement a itérateur de débogage éteint en debug, soit parce qu'il a été construit dans une ancienne version de visual studio ou ils explicitement ajouté la définit le projet.
De recherche pour
_ITERATOR_DEBUG_LEVEL
et_SECURE_SCL
de les supprimer ou de les définir de manière appropriée dans tous les projets et les sources et tout reconstruire.Bref vous êtes probablement mélange release et debug dll. N'est pas lié version dll de débogage ou vice-versa!
_ITERATOR_DEBUG_LEVEL
serait probablement être défini dans le vcproj fichiers si non, alors assurez-vous d'utiliser dll de débogage avec debug exe et la libération des dll avec la version exe.Je fais une petite mise à jour sur cette question, car je viens d'avoir la même erreur aujourd'hui sur une application qui est relier à l'encontre d'une lib statique, après que j'ai effectué la migration de l'ancien Visual 6 projet de Visual Studio 2012.
Dans mon cas, l'erreur est que j'ai tort compilé la version de la lib statique avec /MDd au lieu de /MD, alors que la demande est /MD dans le communiqué. Le réglage de l' /MD dans la lib statique projet a résolu le problème.
Ceci est fait dans propriétés du Projet
Si vous voulez délibérément le lien de votre projet dans Un Communiqué contre un autre projet B en Debug, dire pour conserver les avantages de performance de votre application pendant le débogage, alors vous aurez probablement atteint cette erreur. Vous pouvez résoudre ce problème en modifiant temporairement le préprocesseur drapeaux de projet B pour désactiver l'itérateur de débogage (et de faire correspondre à Un projet):
Dans le Projet B de "Debug" propriétés, les Propriétés de Configuration -> C/C++ -> Préprocesseur, ajoutez ce qui suit Définitions de Préprocesseur:
_HAS_ITERATOR_DEBUGGING=0;_ITERATOR_DEBUG_LEVEL=0;
Projet de reconstruction de B dans le Débogage, puis de construire Un projet de Libération et il devrait relier correctement.
J'ai eu un décalage entre les projets: l'un avec multi-byte character set, l'autre avec Unicode. La correction de ces à s'entendre sur Unicode corrigé le problème.
L'erreur peut être causée par le mélange de debug et release dans le même exécutable ou une dll.
J'ai eu ce problème ainsi.
Mon problème était que j'avais copié/collé de la bibliothèque de répertoires à partir de mon debug configurations.
Des projets "Indep" était statique de la bibliothèque "Dep.lib" à partir de "../Debug", même dans le communiqué. La solution était de changer le répertoire de la bibliothèque de "../Release" j'ai donc pris la version bibliothèque plutôt que précédemment construit de débogage de la bibliothèque.
Essayer de changer _DEBUG de définition de macro NDEBUG en C++ propriétés du projet (pour la Libération de la configuration)
Propriétés de Configuration -> C/C++ -> Préprocesseur -> Définitions de Préprocesseur
opencv_core245.lib(dxt.obj) : error LNK2038: l'inadéquation détecté pour "_ITERATOR_DEBUG_LEVEL': la valeur '0' ne correspond pas à la valeur '2' dans l'essai.obj je suis d'erreur de ce genre.
J'ai opencv_core245.lib et opencv_core245d.lib dans l'éditeur de liens->Input->d'autres dependenc. Depuis ce deux ont été confilicting j'ai supprimé la première opencv_core245.lib. Erreur disparu.
Essayez ceci:
Goto propriété de projet -> C/C++ -> génération de Code -> Bibliothèque d'Exécution
Sélectionnez à partir de zone de liste déroulante valeur : DLL multithread (/MD)
Il fonctionne pour moi 🙂
De la dernière chance (si d'autres moyens ne fonctionnent pas):
définir _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH macro dans tous les projets. Il permet de désactiver "#pragma detect_mismatch" fonctionnalité qui est utilisée dans le tube CATHODIQUE en-têtes.
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
sousC/C++ >> Preprocessor >> PreprocessorDefinitions
.Dans mon cas, pour le Debug et Release, la solution a été de nettoyer puis de reconstruire ensemble de la solution.
Edit: vrai dans mon cas aussi (VS2017)
etape 1: nettoyer le projet.
etape 2: modification de la configuration(mode de débogage pour publication ou vice versa).
etape 3: nettoyez le projet.
etape 4: construire dans le mode de configuration.
PS: pour changer de mode config, trouver les paramètres de configuration de sous menu générer
J'ai eu le même problème aujourd'hui (VS2010), j'ai construit de presse | Win32, puis a essayé de construire Debug | Win32, et reçu ce message.
J'ai essayé de nettoyer Debug | Win32, mais l'erreur persiste.
J'ai ensuite nettoyé de presse | Win32, puis de les nettoyer Debug | Win32, puis il construit amende.
J'ai réussi à me débarrasser de cette erreur (dans mon cas, à l'aide de Ogre3D + Puce) par l'évolution de la dépendance des bibliothèques pour les versions de débogage dans les Propriétés du Projet -> Linker -> Input -> Dépendances Supplémentaires (VC10).
J'ai changé BulletCollision.lib à BulletCollision_debug.lib (pour la configuration debug) et compilé.
J'ai résolu mon problème en modifiant la "Supplémentaires Répertoire de la Bibliothèque", celui-ci était mal en indiquant "$(SolutionDir)\Libération", je l'ai changé en "$(SolutionDir)\$(IntDir)"
Pour corriger cela, ouvrez votre projet, propriétés -> Propriétés de Configuration -> Linker -> Général> d'autres Répertoire de la Bibliothèque
J'espère que cela aidera certains poeples avec le même problème 😉
J'ai eu le même problème entre debug et release bibliothèques.
L'erreur a été dans les propriétés de la solution et /ou configuration des propriétés ou des Configurations.
Les projets configurations ne correspond pas à la configuration principale /plate-forme.
J'ai aussi eu ce problème se pose parce que j'ai re-fait le projet, puis oublié de re-lier par référence à un projet dépendant.
Ainsi en fut-il de la liaison par la référence à l'ancien projet au lieu de le nouveau.
Il est important de savoir qu'il ya un bug dans le nouvel ajout déjà un projet lié par référence. Vous devez supprimer manuellement la référence dans le vcxproj et alors seulement vous pouvez l'ajouter de nouveau. C'est un problème connu dans Visual studio selon msdn.
J'ai eu le même problème, mais le mal était réglé à l'externe .fichier lib à partir de laquelle je n'ai pas de sources. Si vous n'ont pas les fichiers source, la solution la plus simple est juste de modifier le contenu de la .fichier lib.
Ouvrez le .lib le fichier dans un éditeur de texte (j'ai utilisé PSPad, bud bloc-notes de Windows est également possible) et remplacez toutes les occurences de _ITERATOR_DEBUG_LEVEL=2 à _ITERATOR_DEBUG_LEVEL=0
Dans mon cas, la définition de macro NDEBUG dans les "Définitions de Préprocesseur" a besoin d'être modifié pour _DEBUG. Je suis la construction d'une bibliothèque statique pour une utilisation dans un .exe qui se plaignait de la même erreur répertoriés dans la question. Aller dans les Propriétés de Configuration (menu"Projet", "Propriétés" dans le menu), puis cliquez sur le C/C++, section, la section de Préprocesseur en dessous, puis modifier votre Définitions de Préprocesseur, de sorte que NDEBUG est changé à _DEBUG (pour correspondre au paramètre dans l'exe).
Comme toutes les autres réponses, j'ai vérifié mon
Configuration Properties -> C/C++ -> Preprocessor
directives.Dans mon cas, j'ai eu la
NDEBUG
correctement défini dans la Version, mais j'ai aussi eu:_SECURE_SCL=1
.Retrait que l'on fixe le problème.
Petit plus de l'aide ci-dessus:
J'ai eu l'erreur d'incompatibilité après l'ajout d'un statique libto une ancienne VST solution à l'aide de VST 2017 .
VST génère maintenant des "stdfax.h" pour les en-têtes précompilés contenant ces 2 lignes: