最近在使用Qt(VS2010编译)的过程中,需要调用COM库,在Qt中加入了QAxContainer模块,是一个LIB库,在把编译模式从Debug改为Release 后链接报告了一堆错误
-1: 错误:LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in title_widget.obj
-1: 错误:LNK1319: 42 mismatches detected //共42个LNK2038 error网上查资料,原因是Release编译的程序链接到了Debug编译的库上,这是VS2010版本的一个BUG。
最终在 找到了有用的方法,在我的工程预编译头文件中果断加入
#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
加入后还有几个同样的错误,只好试试在所有的头文件中都加入此宏定义,果然屏蔽成功了!
对此问题的MSDN相关链接: