2010-11-02 61 views
32

我剛剛通過Visual Studio(C++)解決方案移到另一臺計算機上,設置了所有目錄和設置,據我所知,並做了一個清理/重建解決方案。我在編譯一堆.obj文件時遇到了上述錯誤,不知道該怎麼辦。_iterator_debug_level值'0'與值'2'不匹配

回答

26

看來你是混合使用不同設置構建的對象文件。嘗試做一個完整的乾淨的重建,並檢查所有的項目文件設置,以確保_ITERATOR_DEBUG_LEVEL宏是相同的(例如,你不混合調試和釋放構建的對象)。

+4

由於某種原因,我的一個項目在釋放模式下定義了_SECURE_SCL = 1,這導致鏈接器錯誤。 – Gyuri 2012-03-10 05:29:06

+0

另一種可能性是一些項目/源文件定義_HAS_ITERATOR_DEBUGGING – korbes 2016-12-02 18:54:12

16

混合二進制文件(目標文件)是一個原因;另一個(我遇到的)是發佈版本中_DEBUG宏的錯誤定義。 _DEBUG不是標準宏,而是由Microsoft使用。

在Emacs編輯.vcxproj -file後,我輸錯_DEBUG,而不是NDEBUG的釋放,遇到完全相同的生成錯誤。

+0

爆炸...... :) – Sandip 2015-04-20 06:59:55

13

在某些情況下,混合的選項中

屬性>配置屬性> C/C++>代碼生成>運行 庫

之間包含庫(IES)目前工作項目 可能會導致此問題。

根據使用情況,在所有項目中統一設置爲/MD/MT/MDd/MTd

+0

謝謝,它的工作。 – lourencoccc 2016-03-10 19:58:50

0

我發現(奇怪)_CRT_NON_CONFORMING_SWPRINTFS導致它。當我刪除它時,我沒有看到「_iterator_debug_level值'0'與值'2'不匹配,而是出現以下警告:

錯誤6錯誤C4996:'_swprintf':swprintf已更改爲符合與ISO C標準一起,添加一個額外的字符計數參數。要使用傳統的Microsoft swprintf,請設置_CRT_NON_CONFORMING_SWPRINTFS。

0

我一直在試圖解決這個問題五天。點雲庫(PCL)代碼在調試模式下成功建立,但在發佈模式下失敗。

我重新配置了我的庫幾次,但它沒有幫助。我發現問題是發佈版本繼承_DEBUG,所以我沒有在項目屬性>>預處理器>>處理器定義下選中它,並且它已經解決了。