'_ITERATOR_DEBUG_LEVEL'不匹配的原因分析:
在VS2010的C++头文件(包括STL)里,都会包含yvals.h这个文件,而这个文件会定义:
#pragma detect_mismatch("_ITERATOR_DEBUG_LEVEL", "xxxxxx")
其中,xxxxxx中的内容,会因为编译方式不同而不同。因此,链接两个使用不同编译方式的东西的时候就会报Error Link 2038。
'_ITERATOR_DEBUG_LEVEL'不匹配的解决办法:
解决办法一: 确保程序的每个模块都使用相同的编译方式;
解决办法二: 屏蔽匹配检测宏_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH,即在所应用的文件前加入宏定义:
#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH