我们正在使用另一个供应商的库,它显然是用错误的标志编译的,即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条答案
按热度按时间vybvopom1#
找到解决办法了。
项目页面/配置属性/ C,C++ /预处理器/预处理器定义。
添加“_ITERATOR_DEBUG_LEVEL=0”在那里工作。
bejyjqdl2#
正如附加信息:项目页面/配置属性/ C,C++ /预处理器/预处理器定义,并根据目标将预处理器macro _ITERATOR_DEBUG_LEVEL设置为以下之一:
rt4zxlrg3#
微软的这篇文章帮助我解决了这个问题:
https://learn.microsoft.com/cpp/standard-library/iterator-debug-level
在Visual Studio 2022中有一个编译器开关来设置值:
/D_ITERATOR_DEBUG_LEVEL=0