J'ai lu beaucoup de solutions à mon problème mais aucune n'a aidé. J'ai essayé de nettoyer, de reconstruire. Visual 2010 réinstallé et passer de professionnel à ultime. Mais je ne sais toujours pas pourquoi j'ai cette erreur. Mon projet ressemble à ceci: 1 Solution Exe pour tester ma bibliothèque statique. 1 bibliothèque statique de la solution Dll. Le code qui est converti en dll utilise la fonction de 1 lib appelée ClassificationFramework. J'ai fourni cette lib comme en-têtes et cpp donc fondamentalement le code source. Dans la solution Exe, j'ai lié ma bibliothèque générée + quelques autres bibliothèques pour l'exécuter + ClassificationFramework.dll. Tout fonctionne bien quand j'utilise Release mais quand je passe au Debug (parce que je veux déboguer certaines choses, 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
Lorsque je compile Release, j'ai également 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 en raison d'un chemin incorrect vers les 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 dans Debug-> Windows-> Modules, je vois qu'il ne peut pas trouver ces fichiers pdb ou quelque chose. Comment puis-je lui dire que ces fichiers sont ici et ici? J'ai essayé d'exécuter MSvisual en tant qu'administrateur, mais cela n'a pas non plus aidé. J'ai utilisé le serveur Microsoft pour charger les fichiers pdb mais je n'ai pas non plus aidé.
Je fais une petite mise à jour sur ce problème, car je viens d'avoir la même erreur aujourd'hui sur une application qui se lie à une bibliothèque statique, après avoir migré l'ancien projet Visual 6 vers Visual Studio 2012.
Dans mon cas, l'erreur est que j'ai compilé par erreur la version Release de la bibliothèque statique avec / MDd au lieu de / MD , alors que l'application est / MD en version. La définition du / MD correct dans le projet de bibliothèque statique a résolu le problème.
Cela se fait dans les propriétés du projet
la source
Si vous souhaitez lier volontairement votre projet A dans Release à un autre projet B dans Debug, par exemple pour conserver les avantages de performances globales de votre application pendant le débogage, vous rencontrerez probablement cette erreur. Vous pouvez résoudre ce problème en modifiant temporairement les indicateurs de préprocesseur du projet B pour désactiver le débogage de l'itérateur (et le faire correspondre au projet A):
Dans les propriétés "Debug" du projet B, Propriétés de configuration -> C / C ++ -> Préprocesseur, ajoutez ce qui suit aux définitions de préprocesseur:
_HAS_ITERATOR_DEBUGGING = 0; _ITERATOR_DEBUG_LEVEL = 0;
Reconstruisez le projet B dans Debug, puis générez le projet A dans Release et il devrait être lié correctement.
la source
J'ai eu un décalage entre les projets: l'un avec un jeu de caractères multi-octets, l'autre avec Unicode. Corriger ces derniers pour convenir d'Unicode a corrigé le problème.
la source
L'erreur peut être causée par le mélange de versions de débogage et de versions de version dans le même exécutable ou dll.
la source
J'ai eu ce problème aussi.
Mon problème était que j'avais copié / collé les répertoires d'inclusion de bibliothèque de mes configurations de débogage.
Le projet "Indep" incluait donc la bibliothèque statique "Dep.lib" de "../Debug", même en version. Le correctif était de changer le répertoire de la bibliothèque en "../Release" donc j'ai attrapé la bibliothèque créée par la version plutôt que la bibliothèque de débogage précédemment construite.
la source
J'ai eu le même problème entre les bibliothèques de débogage et de publication. L'erreur était dans les propriétés de la solution / les propriétés des configurations / les configurations.
Les configurations du projet ne correspondaient pas à la configuration / plate-forme principale.
la source
Essayez de changer la définition de macro _DEBUG en NDEBUG dans les propriétés du projet C ++ (pour la configuration de la version) Propriétés de configuration -> C / C ++ -> Préprocesseur -> Définitions du préprocesseur
la source
Dernière chance (si les autres méthodes ne fonctionnent pas): définissez la macro _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH dans tous les projets. Cela désactivera la fonction "#pragma detect_mismatch" qui est utilisée dans les en-têtes CRT.
la source
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
sousC/C++ >> Preprocessor >> PreprocessorDefinitions
.opencv_core245.lib (dxt.obj): erreur LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL': la valeur '0' ne correspond pas à la valeur '2' dans test.obj J'ai eu une erreur comme celle-ci.
J'ai opencv_core245.lib et opencv_core245d.lib dans Linker-> Input-> Additional dependenc. Comme ces deux éléments étaient confus, j'ai supprimé le premier opencv_core245.lib. Erreur disparue.
la source
Essayez ceci: Goto project property -> C / C ++ -> Code generation -> Runtime Library Sélectionnez à partir de la valeur combobox: DLL multi-thread (/ MD) Cela fonctionne pour moi :)
la source
Dans mon cas, pour le débogage et la version, la solution consistait à nettoyer puis à reconstruire toute la solution.
Edit: vrai dans mon cas aussi (VS2017) step1: nettoyer le projet. étape 2: changer le mode de configuration (du débogage à la version ou vice versa) étape 3: nettoyez le projet. étape 4: construisez dans le mode de configuration requis.
PS: pour changer le mode de configuration, recherchez les paramètres de configuration dans le menu de construction
la source
J'ai eu le même problème aujourd'hui (VS2010), j'ai construit Release | Win32, puis a essayé de construire Debug | Win32 et a reçu ce message.
J'ai essayé de nettoyer Debug | Win32 mais l'erreur persiste. J'ai ensuite nettoyé Release | Win32, puis nettoyé Debug | Win32, puis il s'est bien construit.
la source
J'ai réussi à me débarrasser de cette erreur (dans mon cas en utilisant Ogre3D + Bullet) en changeant les bibliothèques de dépendances en versions de débogage dans Propriétés du projet -> Linker -> Input -> Additional Dependencies (VC10).
J'ai changé BulletCollision.lib en BulletCollision_debug.lib (pour la configuration de débogage) et il a été compilé.
la source
J'ai résolu mon problème en corrigeant le "Répertoire de la bibliothèque supplémentaire", celui-ci était erroné en indiquant "$ (SolutionDir) \ Release", je l'ai changé dans "$ (SolutionDir) \ $ (IntDir)"
Pour le corriger, ouvrez les propriétés de votre projet -> Propriétés de configuration -> Éditeur de liens -> Général -> Répertoire de bibliothèque supplémentaire
J'espère que cela aidera certaines personnes avec le même problème;)
la source
J'ai également eu ce problème et il est survenu parce que j'ai refait le projet, puis j'ai oublié de le relier par référence dans un projet dépendant.
Ainsi, il était lié par référence à l'ancien projet au lieu du nouveau.
Il est important de savoir qu'il existe un bogue lors de l'ajout d'un projet précédemment lié par référence. Vous devez supprimer manuellement la référence dans le vcxproj et ce n'est qu'alors que vous pourrez la rajouter. Il s'agit d'un problème connu dans Visual Studio selon msdn.
la source
J'ai eu un problème similaire, mais le mauvais réglage était dans le fichier externe .lib à partir duquel je n'avais pas de sources. Si vous ne disposez pas des fichiers source , la solution de contournement la plus simple consiste simplement à modifier le contenu du fichier .lib.
Ouvrez le fichier .lib dans un éditeur (j'ai utilisé PSPad, le bloc-notes Windows est également possible) et remplacez toutes les occurrences de _ITERATOR_DEBUG_LEVEL = 2 par _ITERATOR_DEBUG_LEVEL = 0
la source
Dans mon cas, la définition de macro NDEBUG dans les «définitions de préprocesseur» devait être modifiée en _DEBUG. Je construis une bibliothèque statique à utiliser dans un .exe qui se plaignait de la même erreur répertoriée dans la question. Allez dans Propriétés de configuration (menu "Projet", élément de menu "Propriétés"), puis cliquez sur la section C / C ++, puis sur la section Préprocesseur sous celle-ci, puis modifiez vos définitions de préprocesseur afin que NDEBUG devienne _DEBUG (pour correspondre à la réglage dans l'exe).
la source
Comme toutes les autres réponses, j'ai vérifié mes
Configuration Properties -> C/C++ -> Preprocessor
directives.Dans mon cas , j'ai eu le
NDEBUG
correctement défini dans la version, mais je devais aussi:_SECURE_SCL=1
.La suppression de celui-ci a résolu le problème.
la source
Petit ajout à l'aide ci-dessus: j'ai eu l'erreur d'incompatibilité après avoir ajouté une bibliothèque statique à une ancienne solution VST utilisant VST 2017. VST génère maintenant "stdfax.h" pour les en-têtes précompilés contenant ces 2 lignes:
la source