“无法找到“XXX.exe”的调试信息,或者调试信息不匹配”

2014年5月9日 由 Creater 留言 »

“用Qt写的工程,想迁移到VS2012中来,出现各种库问题,一一解决后,又出现’无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。’”

查了些资料,原因是pdb文件没有生成,要让项目生成pdb文件,需要更改:
1. 项目属性,配置属性->连接器->生成调试信息从 no 改为 yes
2. 项目属性,配置属性->c/c++->常规>调试信息信息 为C7 兼容(/Z7)
3. 项目属性,配置属性->c/c++->优化>优化 为禁用(/0d) 因为为了生成这个文件,需要设定debug信息的格式并关掉O2,还要更改linker生成调试信息的开关

另外QextSerialPort代码部分提示如下链接错误信息:
qextserialenumerator.obj : error LNK2019: 无法解析的外部符号 __imp__RegQueryValueExW@24,该符号在函数 “private: static class QString __cdecl QextSerialEnumerator::getRegKeyValue(struct HKEY__ *,unsigned short const *)” (?getRegKeyValue@QextSerialEnumerator@@CA?AVQString@@PAUHKEY__@@PBG@Z) 中被引用

qextserialenumerator.obj : error LNK2019: 无法解析的外部符号 __imp__RegCloseKey@4,该符号在函数 “private: static void __cdecl QextSerialEnumerator::setupAPIScan(class QList &)” (?setupAPIScan@QextSerialEnumerator@@CAXAAV?$QList@UQextPortInfo@@@@@Z) 中被引用

解决办法是:增加 -ladvapi32,原来,RegQueryValueEx 和 RegCloseKey 是包含在 AdvAPI32.Lib 中。

广告位

评论已关闭.