ข้อผิดพลาด LNK2038: ตรวจพบไม่ตรงกันสำหรับ '_ITERATOR_DEBUG_LEVEL': ค่า '0' ไม่ตรงกับค่า '2' ใน main.obj


131

ฉันได้อ่านวิธีแก้ปัญหามากมาย แต่ไม่มีใครช่วยได้ ฉันพยายามทำความสะอาดสร้างใหม่ ติดตั้งวิชวล 2010 ใหม่และเปลี่ยนจากมืออาชีพเป็นสุดยอด แต่ฉันก็ยังไม่รู้ว่าทำไมฉันถึงมีข้อผิดพลาดนี้ โครงการของฉันมีลักษณะดังนี้: 1 Exe Solution เพื่อทดสอบไลบรารีแบบคงที่ของฉัน 1 ห้องสมุดแบบคงที่โซลูชัน Dll รหัสที่แปลงเป็น dll ใช้ฟังก์ชันจาก 1 lib เรียกว่า ClassificationFramework ฉันให้ lib นี้เป็นส่วนหัวและ cpp โดยทั่วไปซอร์สโค้ด ในโซลูชัน Exe ฉันเชื่อมโยงไลบรารีที่สร้างขึ้นของฉัน + libs อื่น ๆ เพื่อเรียกใช้ + ClassificationFramework.dll ทุกอย่างทำงานได้ดีเมื่อฉันใช้ Release แต่เมื่อฉันเปลี่ยนเป็น Debug (เพราะฉันต้องการแก้จุดบกพร่องบางอย่างฉันเบื่อที่จะข้ามดีบักเกอร์ในโหมดรีลีส) ฉันได้รับสิ่งนี้:

    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

เมื่อฉันสร้างใน Release ฉันได้รับคำเตือนเหล่านี้ด้วย:

    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

ฉันพบว่าดีบักเกอร์ข้ามเนื่องจากเส้นทางไปยังไฟล์ 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).

เมื่อฉันไปที่ Debug-> Windows-> Modules ฉันเห็นว่าเขาไม่พบไฟล์ pdb หรืออะไรบางอย่าง ฉันจะพูดเขาได้อย่างไรว่าไฟล์เหล่านั้นอยู่ที่นี่และที่นี่? ฉันพยายามเรียกใช้ MSvisual ในฐานะผู้ดูแลระบบ แต่ก็ไม่ได้ช่วยเช่นกัน ฉันใช้เซิร์ฟเวอร์ microsoft เพื่อโหลดไฟล์ pdb แต่ก็ไม่ได้ช่วย

คำตอบ:


148

ใน VS2010 iterator ระดับดีบักค่าเริ่มต้นเป็น 2 ในการดีบักและปิดใช้งานในรีลีส หนึ่งใน dll ที่คุณใช้อยู่อาจมีการปิดใช้งานการดีบักตัววนซ้ำในการดีบักเนื่องจากสร้างขึ้นในสตูดิโอวิชวลเวอร์ชันเก่ากว่าหรือเพิ่มการกำหนดให้กับโปรเจ็กต์อย่างชัดเจน

ค้นหา_ITERATOR_DEBUG_LEVELและ_SECURE_SCLลบออกหรือตั้งค่าอย่างเหมาะสมในโปรเจ็กต์และแหล่งข้อมูลทั้งหมดและสร้างใหม่ทุกอย่าง

_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 รุ่นและ debug อย่าเชื่อมโยง dll รุ่นในการดีบักหรือในทางกลับกัน!


6
ฉันไม่เห็นในไฟล์. h หรือ. cpp ใด ๆ ของ _ITERATOR_DEBUG_LEVEL หรือ _SECURE_SCL ซึ่งมีอยู่ในไฟล์ obj เท่านั้นเช่น: / FAILIFMISMATCH: "_ ITERATOR_DEBUG_LEVEL = 0" แล้ว
Qbunia

แล้วการข้ามเบรกพอยต์โดยดีบักเกอร์ในรีลีสล่ะ จุดพักบางจุดไม่ได้เติมเต็มและบอกว่าดีบักเกอร์หลีกเลี่ยงเนื่องจากการเพิ่มประสิทธิภาพหรือการเชื่อมโยงสิ่งนี้
Qbunia

42
"ในระยะสั้นคุณอาจกำลังผสมการปล่อยและการแก้ปัญหา dll" ช่วยฉัน ขอบคุณ!
สูงสุด

2
ไวไวรอ! คุณหมายถึงบอกฉันว่าเมื่อฉันใช้ MSVC ในการสร้าง Debug ฉันต้องคอมไพล์การอ้างอิงทั้งหมดอีกครั้ง? แม้แต่คนที่ฉันไม่สนใจที่จะแก้ไขข้อบกพร่อง? คนอะไรวะ! ไม่อยากจะเชื่อเลย!
Michael

1
"ในระยะสั้นคุณอาจจะผสม release และ debug dlls" -> ในกรณีของฉัน RuntimeLibrary เป็น MultiThreadedDebugDLL ในรุ่น Release เมื่อควรเป็น MultiThreadedDLL
Captain Normal

108

ฉันทำการอัปเดตเล็กน้อยเกี่ยวกับปัญหานี้เนื่องจากวันนี้ฉันมีข้อผิดพลาดเดียวกันกับแอปพลิเคชันที่เชื่อมโยงกับ lib แบบคงที่หลังจากที่ฉันย้ายโครงการ Visual 6 เก่าไปยัง Visual Studio 2012

ในกรณีของฉันข้อผิดพลาดคือฉันคอมไพล์สแตติก lib เวอร์ชันรีลีสโดยไม่ถูกต้องด้วย/ MDdแทนที่จะเป็น/ MDในขณะที่แอปพลิเคชันคือ/ MDในรีลีส การตั้งค่า / MD ที่ถูกต้องในโครงการ lib แบบคงที่ช่วยแก้ปัญหาได้

สิ่งนี้ทำได้ในคุณสมบัติโครงการ

  • เลือกConfiguration Properties / C C ++ / Code Generationในแผนผัง
  • และตัวเลือกRuntime Library ถูกตั้งค่าให้เหมือนกันในโปรเจ็กต์และแอปพลิเคชันการอ้างอิงทั้งหมดของคุณ

21

หากคุณต้องการเชื่อมโยงโปรเจ็กต์ A ในรีลีสโดยเจตนากับโปรเจ็กต์ B อื่นในดีบั๊กให้พูดเพื่อรักษาผลประโยชน์โดยรวมของแอปพลิเคชันของคุณไว้ในขณะที่ดีบักคุณอาจจะพบข้อผิดพลาดนี้ คุณสามารถแก้ไขปัญหานี้ได้โดยการแก้ไขแฟล็กตัวประมวลผลล่วงหน้าของโปรเจ็กต์ B ชั่วคราวเพื่อปิดใช้งานการดีบักตัวทำซ้ำ (และทำให้ตรงกับโปรเจ็กต์ A):

ในคุณสมบัติ "ดีบัก" ของโครงการ B คุณสมบัติการกำหนดค่า -> C / C ++ -> ตัวประมวลผลล่วงหน้าให้เพิ่มสิ่งต่อไปนี้ในข้อกำหนดของตัวประมวลผลล่วงหน้า:

_HAS_ITERATOR_DEBUGGING = 0; _ITERATOR_DEBUG_LEVEL = 0;

สร้างโครงการ B ใหม่ใน Debug จากนั้นสร้างโครงการ A ใน Release และควรลิงก์อย่างถูกต้อง


11

ฉันมีความไม่ตรงกันระหว่างโปรเจ็กต์: โครงการหนึ่งมีชุดอักขระแบบหลายไบต์อีกรายการหนึ่งมี Unicode การแก้ไขสิ่งเหล่านี้เพื่อยอมรับ Unicode ได้แก้ไขปัญหา


2
ปรากฎว่าโครงการที่ฉันพยายามสร้างมีปัญหานี้เช่นเดียวกับตัวประมวลผลล่วงหน้าที่ขาดหายไปโดยไม่คาดคิดในการดีบัก: _DEBUG ดูforums.codeguru.com/…
JGeerWM

ฉันมีปัญหาที่คล้ายกันในการ mexing ใน Matlab แต่ในทางกลับกันฉันต้องเปลี่ยนบิลด์ VS2013 เป็นแบบหลายไบต์เพื่อให้ได้ข้อตกลง นอกจากนี้ยังแก้ไขปัญหา RuntimeLIbrary ที่ไม่ตรงกัน
barnhillec

10

ข้อผิดพลาดอาจเกิดจากการผสม debug builds และ release builds เข้าด้วยกันในไฟล์ปฏิบัติการหรือ dll เดียวกัน

  1. ใน vs configuration manager โปรเจ็กต์บางโปรเจ็กต์ของคุณอยู่ในโหมดดีบั๊กและบางโปรเจ็กต์อยู่ในโหมดรีลีสหรือไม่
  2. เป็นหนึ่งในโปรเจ็กต์รีลีสของคุณที่มีสัญลักษณ์ตัวประมวลผลล่วงหน้า DEBUG หรือ _DEBUG กำหนดไว้หรือไม่
  3. หนึ่งในโครงการดีบักของคุณมีสัญลักษณ์ตัวประมวลผลล่วงหน้า NDEBUG กำหนดไว้หรือไม่

7

ฉันมีปัญหานี้เช่นกัน

ปัญหาของฉันคือฉันได้คัดลอก / วางไลบรารีรวมถึงไดเร็กทอรีจากการกำหนดค่าการดีบักของฉัน

ดังนั้นโครงการ "Indep" จึงรวมไลบรารีแบบคงที่ "Dep.lib" จาก "../Debug" แม้ในรุ่น การแก้ไขคือการเปลี่ยนไดเร็กทอรีไลบรารีเป็น "../Release" ดังนั้นฉันจึงจับไลบรารีที่สร้างแบบรีลีสแทนที่จะเป็นไลบรารีดีบักที่สร้างขึ้นก่อนหน้านี้


มีปัญหาที่คล้ายกันโดยที่ lib คงที่ของฉันลงจอดในที่เดียวกันไม่ว่าจะรีลีสหรือดีบัก ในกรณีนี้ควรตั้งชื่อให้แตกต่างกันโดยต่อท้าย "d" หรืออย่างนั้น มิฉะนั้นคุณจะถูกบังคับให้สร้าง lib ใหม่ทุกครั้งที่คุณสลับไปมาระหว่าง debug / release
เหยา

4

ฉันมีปัญหาเดียวกันระหว่างการดีบักและไลบรารีรีลีส ข้อผิดพลาดอยู่ในคุณสมบัติของโซลูชัน / คุณสมบัติการกำหนดค่า / การกำหนดค่า

การกำหนดค่าโครงการไม่ตรงกับการกำหนดค่าหลัก / แพลตฟอร์ม


3

ลองเปลี่ยน _DEBUG เป็นนิยามมาโคร NDEBUG ในคุณสมบัติโปรเจ็กต์ C ++ (สำหรับการกำหนดค่ารีลีส) คุณสมบัติคอนฟิกูเรชัน -> C / C ++ -> ตัวประมวลผลล่วงหน้า -> นิยามตัวประมวลผลล่วงหน้า


3

โอกาสสุดท้าย (หากวิธีอื่นไม่ได้ผล): กำหนดมาโคร _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH ในทุกโปรเจ็กต์ จะปิดใช้งานคุณลักษณะ "#pragma detect_mismatch" ซึ่งใช้ในส่วนหัว CRT


ฉันลองทุกอย่างในหน้านี้แล้วและนี่เป็นสิ่งเดียวที่ได้ผล เพิ่มภายใต้_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH C/C++ >> Preprocessor >> PreprocessorDefinitions
Contango

2

opencv_core245.lib (dxt.obj): ข้อผิดพลาด LNK2038: ตรวจพบไม่ตรงกันสำหรับ '_ITERATOR_DEBUG_LEVEL': ค่า '0' ไม่ตรงกับค่า '2' ใน test.obj ฉันได้รับข้อผิดพลาดเช่นนี้
ฉันมี opencv_core245.lib และ opencv_core245d.lib ใน Linker-> Input-> Additional dependenc เนื่องจากสองคนนี้กำลังสับสนฉันจึงลบอันแรก opencv_core245.lib เกิดข้อผิดพลาด


2

ลองสิ่งนี้: ไปที่คุณสมบัติโครงการ -> C / C ++ -> การสร้างรหัส -> ไลบรารีรันไทม์เลือกจากค่า combobox: Multi-threaded DLL (/ MD) มันใช้ได้สำหรับฉัน :)


2

ในกรณีของฉันสำหรับทั้ง Debug และ Release วิธีแก้ปัญหาคือการทำความสะอาดจากนั้นสร้างโซลูชันทั้งหมดใหม่

แก้ไข: จริงในกรณีของฉันด้วย (VS2017) ขั้นตอนที่ 1: ทำความสะอาดโครงการ ขั้นตอนที่ 2: เปลี่ยนโหมดการกำหนดค่า (จากการดีบักเป็นรีลีสหรือในทางกลับกัน) ขั้นตอนที่ 3: ทำความสะอาดโครงการ ขั้นตอนที่ 4: สร้างในโหมดการกำหนดค่าที่จำเป็น

PS: เพื่อเปลี่ยนโหมดการกำหนดค่าค้นหาการตั้งค่าการกำหนดค่าภายใต้เมนูสร้าง


1

ฉันมีปัญหาเดียวกันในวันนี้ (VS2010) ฉันสร้าง Release | Win32 แล้วพยายามสร้าง Debug | Win32 และได้รับข้อความนี้

ฉันพยายามทำความสะอาด Debug | Win32 แต่ข้อผิดพลาดยังคงมีอยู่ จากนั้นฉันทำความสะอาด Release | Win32 แล้วล้าง Debug | Win32 แล้วสร้างได้ดี


1

ฉันจัดการเพื่อกำจัดข้อผิดพลาดนี้ (ในกรณีของฉันใช้ Ogre3D + Bullet) โดยเปลี่ยนไลบรารีการอ้างอิงเป็นเวอร์ชันดีบักใน Project Properties -> Linker -> Input -> Additional Dependencies (VC10)

ฉันเปลี่ยน BulletCollision.lib เป็น BulletCollision_debug.lib (สำหรับการกำหนดค่าดีบัก) และคอมไพล์


1

ฉันแก้ไขปัญหาในการแก้ไข "ไดเร็กทอรีห้องสมุดเพิ่มเติม" อันนี้ผิดในการระบุ "$ (SolutionDir) \ Release" ฉันเปลี่ยนใน "$ (SolutionDir) \ $ (IntDir)"

ในการแก้ไขให้เปิดคุณสมบัติโครงการของคุณ -> คุณสมบัติการกำหนดค่า -> ตัวเชื่อม -> ทั่วไป -> ไดเรกทอรีห้องสมุดเพิ่มเติม

ฉันหวังว่าสิ่งนี้จะช่วยคนบางคนที่มีปัญหาเดียวกัน;)


ดังนั้นสำหรับฉัน Debug ใช้งานได้ดี แต่เมื่อสร้างในรุ่นฉันได้รับข้อผิดพลาดข้างต้น .... ฉันเปิดไดเรกทอรีห้องสมุดเพิ่มเติมที่พบ: C: / Program Files / PCL 1.8.1 / lib / $ (Configuration) สิ่งที่ฉันควรเพิ่มตอนนี้ ที่นี่?
sqp_125

0

ฉันมีปัญหานี้ด้วยและมันเกิดขึ้นเพราะฉันสร้างโครงการขึ้นมาใหม่แล้วลืมที่จะเชื่อมโยงใหม่โดยการอ้างอิงในโครงการที่อ้างอิง

ดังนั้นจึงมีการเชื่อมโยงโดยอ้างอิงกับโครงการเก่าแทนที่จะเป็นโครงการใหม่

สิ่งสำคัญคือต้องทราบว่ามีข้อบกพร่องในการเพิ่มโครงการที่เชื่อมโยงก่อนหน้านี้ซ้ำโดยการอ้างอิง คุณต้องลบข้อมูลอ้างอิงใน vcxproj ด้วยตนเองจากนั้นจึงสามารถเพิ่มใหม่ได้ นี่เป็นปัญหาที่ทราบใน Visual studio ตาม msdn


0

ฉันมีปัญหาคล้าย ๆ กัน แต่การตั้งค่าผิดอยู่ในไฟล์. lib ภายนอกซึ่งฉันไม่มีแหล่งที่มา หากคุณไม่มีไฟล์ต้นฉบับวิธีแก้ปัญหาที่ง่ายที่สุดคือเปลี่ยนเนื้อหาของไฟล์. lib

เปิดไฟล์. lib ในโปรแกรมแก้ไข (ฉันใช้ PSPad สามารถใช้ notepad ของ Windows ได้) และแทนที่สิ่งที่เกิดขึ้นทั้งหมดของ_ITERATOR_DEBUG_LEVEL = 2เป็น_ITERATOR_DEBUG_LEVEL = 0


0

ในกรณีของฉันข้อกำหนดมาโคร NDEBUG ใน "Preprocessor Definitions" จำเป็นต้องเปลี่ยนเป็น _DEBUG ฉันกำลังสร้างไลบรารีแบบคงที่เพื่อใช้ใน. exe ซึ่งบ่นเกี่ยวกับข้อผิดพลาดเดียวกันกับที่ระบุไว้ในคำถาม ไปที่ Configuration Properties (เมนู "Project", รายการเมนู "Properties") จากนั้นคลิกส่วน C / C ++ จากนั้นคลิกส่วน Preprocessor ที่อยู่ด้านล่างจากนั้นแก้ไข Preprocessor Definitions ของคุณเพื่อให้ NDEBUG เปลี่ยนเป็น _DEBUG (เพื่อให้ตรงกับ การตั้งค่าใน exe)


0

เช่นเดียวกับคำตอบอื่น ๆ ทั้งหมดฉันตรวจสอบConfiguration Properties -> C/C++ -> Preprocessorคำสั่งของฉัน
ในกรณีของฉันฉันมีNDEBUGกำหนดวางจำหน่ายอย่างถูกต้องใน _SECURE_SCL=1แต่ฉันยังมี:

การลบออกช่วยแก้ปัญหาได้


-1

นอกเหนือจากความช่วยเหลือเล็กน้อยข้างต้น: ฉันได้รับข้อผิดพลาดที่ไม่ตรงกันหลังจากเพิ่ม lib แบบคงที่ในโซลูชัน VST รุ่นเก่าโดยใช้ VST 2017 ขณะนี้ VST สร้าง "stdfax.h" สำหรับส่วนหัวที่คอมไพล์ไว้ล่วงหน้าซึ่งมี 2 บรรทัดเหล่านี้:

// Turn off iterator debugging as it makes the compiler very slow on large methods in debug builds
#define _HAS_ITERATOR_DEBUGGING 0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.