問題描述
我已經閱讀了很多解決我的問題的方法,但都沒有幫助.我嘗試清理,重建.重新安裝了visual 2010,從專業版到終極版.但我仍然不知道為什么我有這個錯誤.我的項目是這樣的:1 Exe 解決方案來測試我的靜態庫.1 Dll 解決方案靜態庫.轉換為 dll 的代碼正在使用來自 1 個名為 ClassificationFramework 的庫的函數.我提供了這個庫作為頭文件和 cpp,所以基本上是源代碼.在 Exe 解決方案中,我鏈接了我生成的庫 + 其他一些庫來運行它 + ClassificationFramework.dll.當我使用 Release 時一切正常,但是當我更改為 Debug 時(因為我想調試一些東西,我厭倦了在發布模式下跳過調試器)我明白了:
I have read a lot of solutions to my problem but none helped. I tried clean, rebuild. Reinstalled visual 2010 and change from professional to ultimate. But still I dont know why I have this error. My project look like this: 1 Exe Solution to test my static library. 1 Dll Solution static library. Code which is converted to dll is using function from 1 lib called ClassificationFramework. I provided this lib as headers and cpp so basically source code. In Exe solution I linked my generated library + some other libs to run it + ClassificationFramework.dll. Everything works fine when I use Release but when I change to Debug (because I want to debug some stuff, I am tired of skipping debugger in release mode) I get this:
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 SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsTransformerDebugTester.exe : fatal error LNK1319: 4 mismatches detected
當我在 Release 中構建時,我也收到了這些警告:
When I build in Release I also got these warnings:
1>Link:
1> Generating code
1>c:program files (x86)microsoft visual studio 10.0vcincludeutility(101): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because ptimizations are disabled in function
1>c:userskasiadocumentsvisual studio 2010projectsclassificationframeworkclassificationframeworkdirectoryreader.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.0vcincludexstring(1589): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:userskasiadocumentsvisual studio 2010projectsclassificationframeworkclassificationframeworksamplenamesset.cpp(226): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:userskasiadocumentsvisual studio 2010projectsclassificationframeworkclassificationframeworkdirectoryreader.cpp(60): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:userskasiadocumentsvisual studio 2010projectsclassificationframeworkclassificationframeworksamplenamesset.cpp(199): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:userskasiadocumentsvisual studio 2010projectsclassificationframeworkclassificationframeworksampleset.cpp(27): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:userskasiadocumentsvisual studio 2010projectsclassificationframeworkclassificationframeworksamplenamesset.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 SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsTransformerReleasevc100.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 SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsTransformerReleasevc100.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 SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsTransformerReleasevc100.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 SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsTransformerReleasevc100.pdb'; linking object as if no debug info
1> Tester.vcxproj -> C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsTransformerReleaseTester.exe
<小時>
我發現調試器因為 pdb 文件的路徑錯誤而跳過.
I found that Debugger skips because of wrong path to pdb files.
'Tester.exe': Loaded 'C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2010ProjectsWorkReleaseTester.exe', Symbols loaded.
'Tester.exe': Loaded 'C:WINDOWSSysWOW64kernel32.dll', Cannot find or open the PDB file
'Tester.exe': Unloaded 'C:WINDOWSSysWOW64kernel32.dll'
'Tester.exe': Loaded 'C:WINDOWSSysWOW64
tdll.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64kernel32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:OpenCV2.2inopencv_core220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:WINDOWSSysWOW64msvcp100.dll', Symbols loaded.
'Tester.exe': Loaded 'C:WINDOWSSysWOW64msvcr100.dll', Symbols loaded.
'Tester.exe': Loaded 'C:OpenCV2.2inopencv_highgui220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:WINDOWSSysWOW64user32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64gdi32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64advapi32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64
pcrt4.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64secur32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64ole32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64msvcrt.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSWinSxSx86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.4770_x-ww_A689AB02comctl32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64avifil32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64winmm.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64msacm32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64msvfw32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64shell32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64shlwapi.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64avicap32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64version.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:OpenCV2.2inopencv_imgproc220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:WINDOWSSysWOW64imm32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64lpk.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSSysWOW64usp10.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:WINDOWSWinSxSwow64_Microsoft.Windows.Common- Controls_6595b64144ccf1df_6.0.3790.4770_x-ww_8D2E3180comctl32.dll', Cannot find or open the PDB file
The program '[4984] Tester.exe: Native' has exited with code 0 (0x0).
當我轉到 Debug->Windows->Modules 時,我發現他找不到那些 pdb 文件或其他東西.我怎么能告訴他這些文件在這里和這里?我嘗試以管理員身份運行 MSvisual,但這也無濟于事.我使用微軟服務器加載 pdb 文件,但也沒有幫助.
When i go to Debug->Windows->Modules i see that he cannot find those pdb files or something. How i can say him that those files are here here and here? I tried to run MSvisual as administrator but that too didnt help. I used microsoft server to load pdb files but also didnt help.
推薦答案
在 VS2010 中迭代器調試級別在調試中默認為 2,在發布中禁用.您正在使用的 dll 之一可能在調試中關閉了迭代器調試,因為它是在舊版本的 Visual Studio 中構建的,或者他們明確地將定義添加到項目中.
In VS2010 iterator debug level defaults to 2 in debug and is disabled in release. One of the dlls you are using probably has iterator debugging turned off in debug either because it was built in an older version of visual studio or they explicitly added the defines to the project.
搜索 _ITERATOR_DEBUG_LEVEL
和 _SECURE_SCL
刪除它們或在所有項目和源中適當地設置它們并重建所有內容.
Search for _ITERATOR_DEBUG_LEVEL
and _SECURE_SCL
remove them or set them appropriately in all projects and sources and rebuild everything.
_ITERATOR_DEBUG_LEVEL = 0 // disabled (for release builds)
_ITERATOR_DEBUG_LEVEL = 1 // enabled (if _SECURE_SCL is defined)
_ITERATOR_DEBUG_LEVEL = 2 // enabled (for debug builds)
簡而言之,您可能正在混合發布和調試 dll.不要在調試時鏈接發布 dll,反之亦然!
In short you are probably mixing release and debug dlls. Don't linked release dlls in debug or vice versa!
這篇關于錯誤 LNK2038:檢測到“_ITERATOR_DEBUG_LEVEL"不匹配:值“0"與 main.obj 中的值“2"不匹配的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!