Przeczytałem wiele rozwiązań mojego problemu, ale żadne nie pomogło. Próbowałem wyczyścić, odbudować. Ponownie zainstalowałem Visual 2010 i zmień z Professional na Ultimate. Ale nadal nie wiem, dlaczego mam ten błąd. Mój projekt wygląda tak: 1 Rozwiązanie Exe do testowania mojej biblioteki statycznej. 1 Biblioteka statyczna Dll Solution. Kod konwertowany do dll wykorzystuje funkcję z 1 biblioteki o nazwie ClassificationFramework. Dostarczyłem tę bibliotekę jako nagłówki i cpp, więc w zasadzie kod źródłowy. W rozwiązaniu Exe połączyłem moją wygenerowaną bibliotekę + kilka innych bibliotek, aby ją uruchomić + ClassificationFramework.dll. Wszystko działa dobrze, gdy używam wydania, ale kiedy zmieniam na debugowanie (ponieważ chcę debugować niektóre rzeczy, jestem zmęczony pomijaniem debugera w trybie wydania). Otrzymuję to:
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
Kiedy kompiluję w wersji Release, otrzymałem również następujące ostrzeżenia:
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
Zauważyłem, że Debugger pomija z powodu złej ścieżki do plików 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).
Kiedy idę do Debug-> Windows-> Modules, widzę, że nie może znaleźć tych plików pdb lub czegoś takiego. Jak mogę mu powiedzieć, że te pliki są tutaj i tutaj? Próbowałem uruchomić MSvisual jako administrator, ale to też nie pomogło. Użyłem serwera Microsoft do załadowania plików pdb, ale też nie pomogło.
Robię małą aktualizację tego problemu, ponieważ właśnie dzisiaj miałem ten sam błąd w aplikacji, która łączy się z biblioteką statyczną, po migracji starego projektu Visual 6 do Visual Studio 2012.
W moim przypadku błąd polegał na tym, że omyłkowo skompilowałem wydanie statycznej wersji biblioteki z / MDd zamiast / MD , podczas gdy aplikacja jest w wersji / MD . Ustawienie prawidłowego / MD w projekcie biblioteki statycznej rozwiązało problem.
Odbywa się to we właściwościach projektu
źródło
Jeśli chcesz celowo połączyć swój projekt A w wersji z innym projektem B w debugowaniu, powiedzmy, aby zachować ogólne korzyści wydajnościowe aplikacji podczas debugowania, prawdopodobnie napotkasz ten błąd. Możesz to naprawić, tymczasowo modyfikując flagi preprocesora projektu B, aby wyłączyć debugowanie iteratora (i dopasować je do projektu A):
We właściwościach „Debug” projektu B, Configuration Properties -> C / C ++ -> Preprocessor, dodaj następujące elementy do Preprocessor Definitions:
_HAS_ITERATOR_DEBUGGING = 0; _ITERATOR_DEBUG_LEVEL = 0;
Odbuduj projekt B w debugowaniu, a następnie skompiluj projekt A w wersji i powinien poprawnie połączyć się.
źródło
Miałem niedopasowanie między projektami: jeden z zestawem znaków wielobajtowych, drugi z Unicode. Poprawienie ich w celu uzgodnienia Unicode rozwiązało problem.
źródło
Błąd może być spowodowany mieszaniem razem kompilacji debugowania i kompilacji wydania w tym samym pliku wykonywalnym lub bibliotece dll.
źródło
Ja też miałem ten problem.
Mój problem polegał na tym, że skopiowałem / wkleiłem bibliotekę zawierającą katalogi z moich konfiguracji debugowania.
Tak więc projekt „Indep” zawierał statyczną bibliotekę „Dep.lib” z „../Debug”, nawet w wydaniu. Poprawka polegała na zmianie katalogu biblioteki na „../Release”, więc złapałem bibliotekę zbudowaną w wersji Release, a nie wcześniej zbudowaną bibliotekę debugowania.
źródło
Miałem ten sam problem między bibliotekami debugowania i wydania. Błąd tkwił we właściwościach rozwiązania / właściwościach konfiguracji / konfiguracjach.
Konfiguracje projektów nie pasowały do głównej konfiguracji / platformy.
źródło
Spróbuj zmienić definicję makra _DEBUG na NDEBUG we właściwościach projektu C ++ (dla konfiguracji wydania) Właściwości konfiguracji -> C / C ++ -> Preprocessor -> Definicje preprocesora
źródło
Ostatnia szansa (jeśli inne sposoby nie działają): zdefiniuj makro _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH we wszystkich projektach. Wyłączy to funkcję „#pragma detection_mismatch”, która jest używana w nagłówkach CRT.
źródło
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
podC/C++ >> Preprocessor >> PreprocessorDefinitions
.opencv_core245.lib (dxt.obj): błąd LNK2038: wykryto niezgodność dla „_ITERATOR_DEBUG_LEVEL”: wartość „0” nie pasuje do wartości „2” w test.obj. Otrzymałem taki błąd.
Mam opencv_core245.lib i opencv_core245d.lib w Linker-> Input-> Additional dependenc. Ponieważ te dwa były kłopotliwe, usunąłem pierwszy plik opencv_core245.lib. Błąd zniknął.
źródło
Spróbuj tego: Idź do właściwości projektu -> C / C ++ -> Generowanie kodu -> Biblioteka wykonawcza Wybierz z wartości combobox: Wielowątkowa biblioteka DLL (/ MD) To działa dla mnie :)
źródło
W moim przypadku, zarówno w przypadku debugowania, jak i wydania, rozwiązaniem było wyczyszczenie, a następnie przebudowanie całego rozwiązania.
Edycja: prawda w moim przypadku również (VS2017) krok 1: wyczyść projekt. step2: zmiana trybu konfiguracji (z debugowania na wydanie lub odwrotnie). krok 3: wyczyść projekt. step4: zbuduj w wymaganym trybie konfiguracji.
PS: aby zmienić tryb konfiguracji, znajdź ustawienia konfiguracji w menu budowania
źródło
Miałem dziś ten sam problem (VS2010), zbudowałem wydanie | Win32, a następnie próbował skompilować debugowanie | Win32 i otrzymałem tę wiadomość.
Próbowałem wyczyścić debugowanie | Win32, ale błąd nadal występował. Następnie wyczyściłem Release | Win32, a następnie wyczyszczono debugowanie | Win32, a potem dobrze się zbudował.
źródło
Udało mi się pozbyć tego błędu (w moim przypadku używając Ogre3D + Bullet) zmieniając biblioteki zależności na wersje debugowania w Project Properties -> Linker -> Input -> Additional Dependencies (VC10).
Zmieniłem BulletCollision.lib na BulletCollision_debug.lib (do konfiguracji debugowania) i skompilowałem.
źródło
Rozwiązałem problem z poprawieniem „Dodatkowego katalogu biblioteki”, ten błąd wskazywał „$ (SolutionDir) \ Release”, zmieniłem go w „$ (SolutionDir) \ $ (IntDir)”
Aby to poprawić, otwórz właściwości projektu -> Właściwości konfiguracji -> Konsolidator -> Ogólne -> Dodatkowy katalog biblioteki
Mam nadzieję, że pomoże to niektórym ludziom z tymi samymi problemami;)
źródło
Miałem też ten problem i powstał, ponieważ ponownie wykonałem projekt, a następnie zapomniałem ponownie połączyć go przez odniesienie w projekcie zależnym.
W ten sposób łączył się przez odniesienie do starego projektu zamiast nowego.
Ważne jest, aby wiedzieć, że istnieje błąd w ponownym dodawaniu wcześniej połączonego projektu przez odniesienie. Musisz ręcznie usunąć odniesienie w vcxproj i dopiero wtedy możesz je ponownie dodać. Jest to znany problem w programie Visual Studio według msdn.
źródło
Miałem podobny problem, ale złe ustawienie było w zewnętrznym pliku .lib, z którego nie miałem źródeł. Jeśli nie masz plików źródłowych , najprostszym obejściem jest zmiana zawartości pliku .lib.
Otwórz plik .lib w edytorze (użyłem PSPada, można też użyć notatnika bud Windows) i zamień wszystkie wystąpienia _ITERATOR_DEBUG_LEVEL = 2 na _ITERATOR_DEBUG_LEVEL = 0
źródło
W moim przypadku definicja makra NDEBUG w „Definicjach preprocesora” musiała zostać zmieniona na _DEBUG. Buduję bibliotekę statyczną do użytku w pliku .exe, która skarżyła się na ten sam błąd wymieniony w pytaniu. Przejdź do Właściwości konfiguracji (menu „Projekt”, pozycja menu „Właściwości”), a następnie kliknij sekcję C / C ++, a następnie sekcję Preprocessor pod nią, a następnie edytuj definicje preprocesora, tak aby NDEBUG został zmieniony na _DEBUG (aby dopasować ustawienie w exe).
źródło
Jak wszystkie inne odpowiedzi, sprawdziłem swoje
Configuration Properties -> C/C++ -> Preprocessor
dyrektywy.W moim przypadku miałem
NDEBUG
poprawnie zdefiniowane w wydaniu, ale także miał:_SECURE_SCL=1
.Usunięcie tego rozwiązało problem.
źródło
Mały dodatek do powyższej pomocy: otrzymałem błąd niezgodności po dodaniu statycznego libto do starszego rozwiązania VST używającego VST 2017. VST generuje teraz „stdfax.h” dla prekompilowanych nagłówków zawierających te 2 wiersze:
// Turn off iterator debugging as it makes the compiler very slow on large methods in debug builds #define _HAS_ITERATOR_DEBUGGING 0
źródło