【问题标题】:_ITERATOR_DEBUG_LEVEL error in visual studioVisual Studio 中的 _ITERATOR_DEBUG_LEVEL 错误
【发布时间】:2011-06-11 23:00:42
【问题描述】:

我正在尝试在 Windows 7 上的 Visual Studio 2010 中编译 JRTPLIB。这是一场真正的噩梦……但我至少缩小了问题范围。

这是剩下的。

Error   3   error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in client.obj   C:\Users\Johan-bar\Documents\Visual Studio 2010\Projects\client\client\jrtplib.lib(rtpsession.obj)  client

我用谷歌搜索了一大堆,原因似乎是一个在调试模式下编译,而另一个在发布模式下编译。

我的目标是编译一个 Release 可执行文件,因为我想在不同的计算机上进行测试。

1) 哪个不在发布模式,JRTPLIB 或客户端(我的,正在尝试编译的那个)?

2) 如何更改 ITERATOR_DEBUG_LEVEL?两者都使用运行时库 /MT 和预处理器定义 WIN32、_MT,以及我猜的默认值。

干杯

【问题讨论】:

  • 我很想回答你的问题 #1——它不在发布模式下。从错误消息中看不清楚。

标签: c++ visual-studio winapi compiler-construction release


【解决方案1】:

使用 -D_ITERATOR_DEBUG_LEVEL=0 选项编译您使用的所有内容。在 VS 2010 Release 模式下默认是这样,但有些东西仍然是用其他选项构建的,因此不兼容二进制。

在较旧的视觉工作室中有 _SECURE_SCL,我不确定某些代码是否仍然可以使用它。在某个地方(比如在 stdafx.h 中)放置这些匹配的静态检查。

#if _ITERATOR_DEBUG_LEVEL == 0 && _SECURE_SCL != 0 
#error _SECURE_SCL != 0 when _ITERATOR_DEBUG_LEVEL == 0 
#endif 

如果您想查看 _ITERATOR_DEBUG_LEVEL 有什么值,那么您可以在代码中使用一些#pragma 消息来告诉您。

【讨论】:

  • -D_ITERATOR_DEBUG_LEVEL=0 在“C/C++”-> 命令行下?它没有改变任何东西,仍然是同样的错误。我添加了你提到的代码,它没有触发。
  • 您对 jrtplib 和客户端都使用了该选项?然后代码中的某些东西正在以某种方式改变它。
  • 没有别的办法了吗?这些编译器问题真的很烦人,花更多的时间来尝试修复它而不是编码>。
  • 不。实际上我尝试过,因为 JRTPLIB 是开源的......它在 VS 2010 下编译和链接都很好,无论是发布还是调试,不需要任何特殊处理。
  • 没关系,我解决了,这是一个愚蠢的问题。我的项目文件夹中有一个 JRTPLIB 的旧调试 .lib,所以它链接到那个而不是其他引用的库 >.
【解决方案2】:

解决办法:

Project Pages >> Configuration Properties >> C,C++ >> Preprocessor >> Preprocessor Definitions

在那里添加_ITERATOR_DEBUG_LEVEL=0。 另见:How to set _ITERATOR_DEBUG_LEVEL in VS2010?

【讨论】:

  • “这就是答案”和“这是什么意思”的完美结合
【解决方案3】:

我找到了另一种产生这些错误的方法。

我使用 Visual Studio 2010 批量构建来构建平台和配置的所有可能组合,但我遇到了这些错误。查看输出显示批处理构建不尊重项目依赖关系 - 因此将发布构建中的陈旧库与新编译的调试 obj 文件链接。

在构建输出的后面几行,它构建了库的调试版本。

手动进行“批量构建”(即手动选择平台和配置的各种组合)产生了干净的构建。

道德:不要使用 Visual Studio 2010 批量构建。我不知道他们是否在更高版本的 VS 中修复了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多