_iterator_debug_level值'0'与值'2'不匹配

时间:2010-11-02 18:02:25

标签: c++ visual-studio debugging compiler-construction

我刚刚将Visual Studio(C ++)解决方案转移到另一台计算机上,根据我的需要设置了所有目录和设置,并对解决方案进行了清理/重建。我在编译时遇到了一堆.obj的错误,不知道该怎么办。

6 个答案:

答案 0 :(得分:28)

您似乎正在混合使用不同设置构建的对象文件。尝试进行完全干净的重建并检查所有项目文件设置,以确保_ITERATOR_DEBUG_LEVEL宏是相同的(例如,您没有混合调试和发布内置对象)。

答案 1 :(得分:17)

混合二进制文件(目标文件)是一个原因;另一个(我遇到过)是发布版本中_DEBUG宏的错误定义。 _DEBUG不是标准宏,而是由Microsoft使用。

在Emacs中编辑 .vcxproj - 文件后,我错误地输入了_DEBUG而不是NDEBUG,并且遇到了相同的构建错误。

答案 2 :(得分:14)

在某些情况下,混合

中的选项
  

属性>配置属性> C / C ++>代码生成>运行时   文库

包含的图书馆当前正在运行的项目之间 可能导致这个问题。

根据使用情况,在所有项目中统一设置为/MD/MT/MDd/MTd

答案 3 :(得分:1)

I have been trying to solve this issue for five days. The Point Cloud Library (PCL) code builds successfully in debug mode but fails in release mode.

I have reconfigured my library several times but it didn't help. I found the problem was that the release version was inheriting _DEBUG so I unchecked it under project properties >> Preprocessor >> Processor Definitions and it was solved.

答案 4 :(得分:1)

在我的 VS2019 项目的调试版本中尝试解决问题几天后。设置项目 >> 属性 >> C/C++ >> 处理器 _HAS_ITERATOR_DEBUGGING=0 定义对我有用。

答案 5 :(得分:0)

我(奇怪地)发现_CRT_NON_CONFORMING_SWPRINTFS导致了它。当我删除它时,我没有得到" _iterator_debug_level值' 0'不匹配价值' 2'"而是以下警告:

错误6错误C4996:' _swprintf':swprintf已更改为符合ISO C标准,添加了额外的字符数参数。要使用传统的Microsoft swprintf,请设置_CRT_NON_CONFORMING_SWPRINTFS。