我试图了解Microsoft Visual Studio C ++ 2010中_ITERATOR_DEBUG_LEVEL的各个方面。
为此,我从一个非常简单的.cc文件创建了一个DLL:
#include <vector>
__declspec(dllexport) void foo(std::vector<int>& a);
#ifndef _ITERATOR_DEBUG_LEVEL
#error _ITERATOR_DEBUG_LEVEL is not defined
#endif
void foo(std::vector<int>& a)
{
a.push_back(10);
}
我使用标志/MD
(运行时库=多线程DLL)创建了目标文件。目标文件中包含令牌/FAILIFMISMATCH:"_ITERATOR_DEBUG_LEVEL=0"
。但是,相应的.lib文件没有任何此类内容。当DLL由。{1}}编译的.cc文件的可执行文件使用时,会产生问题(运行时库=多线程调试DLL)。链接时没有错误,但程序在运行时崩溃。
根据我的理解,在网上阅读各种文章后,如果上面的VS Project创建的.lib包含上述标记,则EXE的创建将在链接时失败,从而防止出现运行时问题。
我需要在DLL的VS项目中更改什么才能确保将上述标记插入.lib文件中?