Saya telah membaca banyak solusi untuk masalah saya tetapi tidak ada yang membantu. Saya mencoba membersihkan, membangun kembali. Diinstal ulang visual 2010 dan berubah dari profesional ke ultimate. Tetapi saya masih tidak tahu mengapa saya memiliki kesalahan ini. Proyek saya terlihat seperti ini: 1 Exe Solution untuk menguji perpustakaan statis saya. 1 Dll Solusi perpustakaan statis. Kode yang dikonversi ke dll menggunakan fungsi dari 1 lib disebut ClassificationFramework. Saya memberikan lib ini sebagai header dan cpp jadi pada dasarnya kode sumber. Dalam solusi Exe saya menautkan pustaka yang dihasilkan + beberapa lib lainnya untuk menjalankannya + ClassificationFramework.dll. Semuanya berfungsi dengan baik ketika saya menggunakan Release tetapi ketika saya mengubah ke Debug (karena saya ingin men-debug beberapa hal, saya bosan melewatkan debugger dalam mode rilis) Saya mendapatkan ini:
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
Ketika saya membuat Rilis saya juga mendapat peringatan ini:
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
Saya menemukan bahwa Debugger melompati karena jalur yang salah ke file 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).
Ketika saya pergi ke Debug-> Windows-> Modul saya melihat bahwa dia tidak dapat menemukan file-file pdb atau sesuatu. Bagaimana saya bisa mengatakan kepadanya bahwa file-file itu ada di sini dan di sini? Saya mencoba menjalankan MSvisual sebagai administrator tetapi itu juga tidak membantu. Saya menggunakan server microsoft untuk memuat file pdb tetapi juga tidak membantu.
Saya membuat sedikit pembaruan tentang masalah ini, karena saya baru saja mengalami kesalahan yang sama hari ini pada aplikasi yang terhubung dengan lib statis, setelah saya memigrasi proyek Visual 6 lama ke Visual Studio 2012.
Dalam kasus saya kesalahannya adalah bahwa saya keliru mengkompilasi versi Rilis dari lib statis dengan / MDd bukan / MD , sedangkan aplikasi adalah / MD dalam rilis. Pengaturan yang benar / MD dalam proyek lib statis menyelesaikan masalah.
Ini dilakukan di properti Proyek
sumber
Jika Anda ingin secara sengaja menautkan proyek Anda A in Release dengan proyek B lainnya di Debug, katakanlah untuk menjaga manfaat kinerja keseluruhan aplikasi Anda saat debugging, maka Anda kemungkinan akan menemukan kesalahan ini. Anda dapat memperbaikinya dengan memodifikasi sementara flag preprocessor proyek B untuk menonaktifkan debug iterator (dan membuatnya cocok dengan proyek A):
Dalam properti "Debug" Proyek B, Properti Konfigurasi -> C / C ++ -> Preprocessor, tambahkan berikut ini ke Definisi Preprocessor:
_HAS_ITERATOR_DEBUGGING = 0; _ITERATOR_DEBUG_LEVEL = 0;
Bangun kembali proyek B di Debug, lalu bangun proyek A dalam Rilis dan harus terhubung dengan benar.
sumber
Saya memiliki ketidakcocokan antara proyek: satu dengan set karakter multi-byte, yang lainnya dengan Unicode. Memperbaiki ini untuk menyetujui Unicode memperbaiki masalah.
sumber
Kesalahan dapat disebabkan oleh pencampuran bersama build debug dan rilis build di executable atau dll yang sama.
sumber
Saya punya masalah ini juga.
Masalah saya adalah bahwa saya telah menyalin / menempel perpustakaan termasuk direktori dari konfigurasi debug saya.
Jadi proyek "Indep" termasuk pustaka statis "Dep.lib" dari "../Debug", bahkan dalam rilis. Cara mengatasinya adalah mengubah direktori pustaka menjadi "../Release" jadi saya menangkap pustaka yang dibuat rilis daripada pustaka debug yang sebelumnya dibuat.
sumber
Saya memiliki masalah yang sama antara debug dan rilis perpustakaan. Kesalahan ada di properti solusi / Konfigurasi properti / Konfigurasi.
Konfigurasi proyek tidak sesuai dengan konfigurasi / platform utama.
sumber
Coba ubah _DEBUG ke NDEBUG definisi makro dalam properti proyek C ++ (untuk konfigurasi Release) Properti Konfigurasi -> C / C ++ -> Preprocessor -> Definisi Preprocessor
sumber
Peluang terakhir (jika cara lain tidak berhasil): tentukan _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH makro di semua proyek. Ini akan menonaktifkan fitur "#pragma detect_mismatch" yang digunakan dalam header CRT.
sumber
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
bawahC/C++ >> Preprocessor >> PreprocessorDefinitions
.opencv_core245.lib (dxt.obj): error LNK2038: ketidakcocokan terdeteksi untuk '_ITERATOR_DEBUG_LEVEL': nilai '0' tidak cocok dengan nilai '2' dalam test.obj saya mendapat kesalahan seperti ini.
Saya memiliki opencv_core245.lib dan opencv_core245d.lib di Linker-> Input-> Tambahan dependenc. Karena ini dua confilicting saya menghapus opencv_core245.lib pertama. Kesalahan hilang.
sumber
Coba ini: Properti proyek Goto -> C / C ++ -> Pembuatan kode -> Runtime Library Pilih dari nilai combobox: DLL multi-ulir (/ MD) Ini bekerja untuk saya :)
sumber
Dalam kasus saya, untuk Debug dan Release, solusinya adalah membersihkan lalu membangun kembali seluruh solusi.
Sunting: true dalam kasus saya juga (VS2017) langkah1: bersihkan proyek. step2: ubah mode konfigurasi (dari debug ke rilis atau sebaliknya). langkah 3: bersihkan proyek. step4: membangun dalam mode konfigurasi yang diperlukan.
PS: untuk mengubah mode konfigurasi, temukan pengaturan konfigurasi di bawah menu bangun
sumber
Saya memiliki masalah yang sama hari ini (VS2010), saya membangun Release | Win32, kemudian mencoba membangun Debug | Win32, dan mendapat pesan ini.
Saya mencoba membersihkan Debug | Win32 tetapi kesalahan masih berlanjut. Saya kemudian membersihkan Release | Win32, lalu bersihkan Debug | Win32, dan kemudian dibangun dengan baik.
sumber
Saya berhasil menyingkirkan kesalahan ini (dalam kasus saya menggunakan Ogre3D + Bullet) dengan mengubah pustaka dependensi ke versi debug di Properti Proyek -> Linker -> Input -> Tambahan Ketergantungan (VC10).
Saya mengubah BulletCollision.lib menjadi BulletCollision_debug.lib (untuk konfigurasi debug) dan dikompilasi.
sumber
Saya menyelesaikan masalah saya dalam memperbaiki "Direktori Perpustakaan Tambahan", yang ini salah dalam menunjukkan "$ (SolutionDir) \ Release", saya mengubahnya dalam "$ (SolutionDir) \ $ (IntDir)"
Untuk memperbaikinya, buka properti proyek Anda -> Configuration Properties -> Linker -> General -> Direktori Perpustakaan Tambahan
Saya harap ini akan membantu beberapa orang dengan masalah yang sama;)
sumber
Saya juga memiliki masalah ini dan muncul karena saya membuat kembali proyek dan kemudian lupa untuk menautkannya kembali dengan referensi dalam proyek dependen.
Jadi itu menghubungkan dengan referensi ke proyek lama dan bukan yang baru.
Penting untuk diketahui bahwa ada bug dalam menambahkan kembali proyek yang ditautkan sebelumnya dengan referensi. Anda harus menghapus referensi secara manual di vcxproj dan hanya dengan itu Anda dapat menambahkannya kembali. Ini adalah masalah yang diketahui di Visual studio menurut msdn.
sumber
Saya memiliki masalah yang sama, tetapi pengaturan yang salah ada di file .lib extern dari mana saya tidak memiliki sumber. Jika Anda tidak memiliki file sumber , solusi paling sederhana adalah dengan hanya mengubah konten file .lib.
Buka file .lib dalam editor (saya menggunakan PSPad, bud notepad Windows juga dimungkinkan) dan ganti semua kejadian _ITERATOR_DEBUG_LEVEL = 2 menjadi _ITERATOR_DEBUG_LEVEL = 0
sumber
Dalam kasus saya definisi makro NDEBUG dalam "Definisi Preprosesor" perlu diubah menjadi _DEBUG. Saya sedang membangun perpustakaan statis untuk digunakan dalam .exe yang mengeluhkan kesalahan yang sama yang tercantum dalam pertanyaan. Pergi ke Configuration Properties (menu "Project", item menu "Properties") dan kemudian klik bagian C / C ++, lalu bagian Preprocessor di bawahnya, lalu edit Definisi Preprocessor Anda sehingga NDEBUG diubah menjadi _DEBUG (untuk mencocokkan pengaturan di exe).
sumber
Seperti semua jawaban lainnya, saya memeriksa
Configuration Properties -> C/C++ -> Preprocessor
arahan saya .Dalam kasus saya saya punya
NDEBUG
benar didefinisikan dalam Pers, tapi saya juga punya:_SECURE_SCL=1
.Menghapus yang satu itu memperbaiki masalahnya.
sumber
Tambahan kecil untuk bantuan di atas: Saya mendapatkan kesalahan ketidakcocokan setelah menambahkan libto statis solusi VST yang lebih lama menggunakan VST 2017. VST sekarang menghasilkan "stdfax.h" untuk header yang sudah dikompilasi yang mengandung 2 baris ini:
sumber