我有一个大型的C ++项目(20个静态库,5个DLL)和某些我无法查明的内存问题。打印到CMD窗口太不可靠了,我进入了圈子,我觉得在调试模式下运行项目是我唯一的希望来确定这个bug的位置。
但是,由于VS中的_ITERATOR_DEBUG_LEVEL错误,我似乎无法在调试模式下构建项目。
The accepted solution seems to be to recompile everything at the same debug level。所以我尝试了这个并设法在_ITERATOR_DEBUG_LEVEL = 0选项中编译我的所有DLL(它是一大堆蠕虫)。
但我仍然遇到_ITERATOR_DEBUG_LEVEL错误,我仍然无法在调试模式下编译我的项目。 编辑确切的错误是:
LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
它列出了这些文件,其中myProject是我正在尝试编译的项目。 projectVRPNabc.o来自另一个使用_ITERATOR_DEBUG_LEVEL = 0重新编译的项目
projectVRPNabc.o
myproject123.o
myproject456.o
myproject789.o
请咨询,帮助吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
确实存在一个问题,即DLL没有使用必要的_ITERATOR_DEBUG_LEVEL
进行编译,以便项目能够编译。
肉眼看来,DLL似乎是在调试模式下的适当设置下编译的。 这是谎言。
相反,在Configuration Manager中,项目设置为编译为发布模式。 按下按钮进行编译,当它说" Debug"实际上会在发布版本中编译。这个问题被认为是糟糕的用户界面设计。这也意味着工具栏不可靠。
TL; DR :Visual Studio的工具栏是个谎言。