如何在VS2010中设置_ITERATOR_DEBUG_LEVEL?

18

我们正在使用另一个供应商的库,显然该库是使用错误的标志编译的,具体来说是在32位调试模式下_ITERATOR_DEBUG_LEVEL = 0。虽然我已经向他们提交了错误报告,但我需要一个中间解决方案。我们自己不使用stl,因此我可以自由更改使用该库的子项目的标志。但我无法弄清楚如何这样做。我尝试了一些方法但都没有奏效:

/D_ITERATOR_DEBUG_LEVEL=0
> LINK : warning LNK4044: unrecognized option '/D_ITERATOR_DEBUG_LEVEL=0'; ignored 

#define _ITERATOR_DEBUG_LEVEL 0
> Nothing happens

如何使用正确的语法或选项在不使用已检查迭代器的情况下使项目编译通过?


3
/D 是编译器的一个选项,你将它传递给了链接器。 - Roman Plášil
3个回答

33

找到了解决方案。

项目页面/配置属性/C,C++/预处理器/预处理器定义。

在那里添加"_ITERATOR_DEBUG_LEVEL=0"有效。


我刚刚执行了上面的建议。我有两个项目,一个是静态库链接到另一个项目。每个项目最初都是2008 Express项目。该库已完全自动转换为2010 Express,而另一个项目则作为现有文件插入到新的2010项目中。我必须进行各种配置和代码更改,以使后者在使用2010 Express构建时能够在调试模式下运行。我已将_ITERATOR_DEBUG_LEVEL = 0添加到Release的预处理器宏中,用于exe和静态库。但这没有任何影响。 - user2263958
只是为了澄清用户22636958的评论,错误消息的读取方式让我觉得我必须通过添加“_ITERATOR_DEBUG_LEVEL”来更改错误的项目。我更改了另一个项目,这对我有用。 :-) - kmort
只是为了补充答案。在“调试”菜单中,单击“基本属性”,然后展开“配置属性”。 - Andreas

6

作为额外的信息: 项目页面/配置属性/C、C++/预处理器/预处理器定义,将预处理器宏_ITERATOR_DEBUG_LEVEL设置为以下之一,具体取决于目标:

_ITERATOR_DEBUG_LEVEL = 0 // disabled (for release builds)
_ITERATOR_DEBUG_LEVEL = 1 // enabled (if _SECURE_SCL is defined)
_ITERATOR_DEBUG_LEVEL = 2 // enabled (for debug builds)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接