题 如何在VS2010中设置_ITERATOR_DEBUG_LEVEL?


我们正在使用另一个供应商的库,这显然是使用错误的标志编译的,即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

在没有检查迭代器的情况下使项目编译的正确语法或选项是什么?


16
2018-04-20 08:56


起源


/ D是编译器的一个选项,您将它提供给链接器 - Roman Plášil


答案:


找到了解决方案。

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

在那里添加“_ITERATOR_DEBUG_LEVEL = 0”。


28
2018-04-20 13:10



我刚刚执行了上面的建议。我有2个项目,一个是链接到另一个的静态库。每个都是作为2008 Express项目开始的。该库完全自动转换为2010 Express,另一个作为现有文件插入到新的2010项目中。我不得不进行各种配置和代码更改,以便使用2010 Express在调试下构建后一个项目。我已将Release下的_ITERATOR_DEBUG_LEVEL = 0添加到exe和静态库的预处理器宏中。它没有任何区别。
只是为了澄清user22636958的评论,错误信息的读取方式,它让我觉得我必须通过添加更改错误的项目 _ITERATOR_DEBUG_LEVEL。我改变了另一个,它对我有用。 :-) - kmort
只是为了补充答案。在“调试”菜单中,单击“基本属性”并展开“配置属性”。 - mrt


就像附加信息一样: 项目页面/配置属性/ 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)

4
2018-01-07 16:17