c++ - _ITERATOR_DEBUG_LEVEL = 1 是什么意思?

标签 c++ visual-studio-2010 linker

在 VS2010 中,C++ 项目在 x64/Release 中链接时出现此错误:

错误 LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”不匹配:值“0”与值“1”不匹配

所有其他配置/平台组合链接就好了。因此,构建了一个静态库,其中 _ITERATOR_DEBUG_LEVEL 设置为 0,而依赖于它的 .dll 以某种方式将 _ITERATOR_DEBUG_LEVEL 设置为 1。我试图弄清楚这意味着什么,以便弄清楚如何将其关闭!

我在谷歌搜索时发现此错误的唯一引用是 _ITERATOR_DEBUG_LEVEL 与值 0 和 2 冲突时。这表明尝试将发布与调试链接。但我敢肯定,这里不是这种情况。

最佳答案

好吧,在为此苦苦挣扎了一个小时后,我问了这个问题后立即想通了……为子孙后代:

_ITERATOR_DEBUG_LEVEL = 0 (in release mode)
_ITERATOR_DEBUG_LEVEL = 1 (in release mode if _SECURE_SCL is defined)
_ITERATOR_DEBUG_LEVEL = 2 (in debug mode)

不知何故,我只在我的 DLL 的 Release/x64 配置中将 _SECURE_SCL 定义为预处理器定义,我不得不眯起眼睛很难注意到它。删除该定义后,错误就消失了。

编辑:我找到了 nice lecture/tutorial on msdn that (among other things) explains _ITERATOR_DEBUG_LEVEL .不幸的是,它确实需要相当新版本的 Microsoft Silverlight 才能观看。

关于c++ - _ITERATOR_DEBUG_LEVEL = 1 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130044/

相关文章:

c++ - C++中的精确采样

c# - Visual Studio 2010 WPF 设计器规模

C# 二进制序列化和 AssemblyFormat with FormatterAssemblyStyle.Full

c++ - 将函数加好友时出错

ios - 本地化 xib 时出现 Xcode 链接器错误

linker - Libav链接错误: undefined references

c++ - JNI DeleteLocalRef 说明

C++11 反向基于范围的 for 循环

assembly - 如何在 LLVM 中生成使用非常量值初始化全局变量的代码?

c++ - 通过类的成员搜索类的 vector