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 文件中的换行符 (_)