Skr*_*sli 22 c++ linker visual-studio-2010
在VS2010中,C++项目在x64/Release中链接时遇到此错误:
错误LNK2038:检测到'_ITERATOR_DEBUG_LEVEL'不匹配:值'0'与值'1'不匹配
所有其他配置/平台组合链接都很好.所以静态库是在_ITERATOR_DEBUG_LEVEL设置为0的情况下构建的.依赖于它的.dll以某种方式将_ITERATOR_DEBUG_LEVEL设置为1.我试图弄清楚这意味着什么,所以我可以弄清楚如何关闭它!
我在谷歌搜索时发现的唯一引用此错误的是_ITERATOR_DEBUG_LEVEL与值0和2的冲突.这表示尝试将释放与调试联系起来.但我确信这不是这种情况.
Skr*_*sli 37
好吧,在经历了一个小时的挣扎之后,我在问了这个问题之后立刻想出来......为了后人:
_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)
Run Code Online (Sandbox Code Playgroud)
不知怎的,我只在我的DLL的Release/x64配置中将_SECURE_SCL定义为预处理器定义,我不得不眯着眼睛注意它.删除该定义后,错误就消失了.
编辑:我在msdn上找到了这个很好的讲座/教程(其中包括)解释_ITERATOR_DEBUG_LEVEL.不幸的是,它需要一个相当新版本的Microsoft Silverlight才能观看.
| 归档时间: |
|
| 查看次数: |
24953 次 |
| 最近记录: |