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