Visual Studio 中的 _ITERATOR_DEBUG_LEVEL 错误,接受的解决方案不起作用

Posted

技术标签:

【中文标题】Visual Studio 中的 _ITERATOR_DEBUG_LEVEL 错误,接受的解决方案不起作用【英文标题】:_ITERATOR_DEBUG_LEVEL error in visual studio, accepted solution not working 【发布时间】:2014-04-30 21:22:05 【问题描述】:

我有一个大型 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

建议,帮助,好吗?

【问题讨论】:

确切的错误信息是什么,输出日志中它之前和之后的行是什么?在您链接的问题中,文件client.cpp 的调试级别为0,而rtpsession.cpp 的调试级别为2。哪些文件是您的问题文件? @MooingDuck 我添加了错误,您现在可以删除您的反对票,以便我的问题可以得到其他人的帮助吗?负分会显着排斥其他人。 咦,为什么你的消息看起来不像另一个?您可以将输出窗口中该错误之前和之后的 5 行放入问题中吗? (如果丢失,请按 Alt+2 查看)(重命名文件夹和文件即可) @MooingDuck 不。我现在正处于一个漫长的过程中,无法重新编译以检索整个错误消息。从现在开始重新编译完成的几个小时后,我可以,但那将是几个小时之后,到那时我得到答案的机会将非常低,因为问题要么倾向于立即得到答案,要么根本不得到答案(除了落后者几周或几个月后回答)。所以当我的问题最终没有得到答案时,那又如何呢?我唯一的选择就是重新询问。并且重新询问将被关闭,因为这是一个骗局。请善待。 对问题进行小幅编辑,例如添加额外信息,将其推到“活动”页面的顶部,这应该会让人们查看它。 【参考方案1】:

_ITERATOR_DEBUG_LEVEL error in visual studio

在此处查看评论。

根据其中一个 cmets,这可能是由于您的目录中的旧库所致。

【讨论】:

问题明确指出您链接到的确切答案不起作用 我专门将他链接到评论。问这个问题的人说这个解决方案也没有奏效。他用一个旧图书馆解决了这个问题 哦。我将链接替换为实际链接到评论的链接,并澄清了您的措辞。【参考方案2】:

确实存在一个问题,即未使用必要的_ITERATOR_DEBUG_LEVEL 编译 DLL 以使项目能够编译。

肉眼看来,DLL 似乎是在调试模式下的正确设置下编译的。 这是一个谎言。

相反,在配置管理器中,项目被设置为编译为发布模式。 所以当它说“调试”时按下按钮进行编译实际上会在发布时编译。这个问题被归结为糟糕的用户界面设计。这也意味着工具栏不可靠。

TL;DR:Visual Studio 的工具栏是个谎言。

【讨论】:

以上是关于Visual Studio 中的 _ITERATOR_DEBUG_LEVEL 错误,接受的解决方案不起作用的主要内容,如果未能解决你的问题,请参考以下文章

防止 Visual Studio 2015 删除 VB.NET 文件中的换行符 (_)

Visual Studio中的奇怪Python包导入行为

Visual Studio 中的动态链接

似乎无法忽略 Visual Studio 2010 中的库

Visual Studio 中的 _ITERATOR_DEBUG_LEVEL 错误,接受的解决方案不起作用

Visual Studio stl 数字实现中的双标头保护