QTWarning

来源:互联网 发布:数控5轴编程招聘 编辑:程序博客网 时间:2024/06/01 10:32

QT   LNK4099:未找到PDB……


第一:需要了解的知识,微软有一种文件PDB(Program Debug Database)程序调试数据,它的作用是记录所编译的程序的调试信息的,例如哪个符号在哪一行出现等内容。简言之,微软的Debug版本程序中在默认情况下都要对“它所编译出的内容”生成这个PDB文件。

第二:如果程序需要引入外部的[b]静态库[/b],那么在Debug版本中,外部的静态库也是需要提供它自己的PDB文件的,因为本项目并不对外部的静态库进行编译,所以它无法生成外部静态库的PDB文件,就拿LZ的事情来说,qtmaind.lib就是Qt针对MSVC编译用的一个静态库,在qtmaind.dll中的第一个“d”字母表示“debug”版本的意思,正常情况下应该随同这个lib文件提供一个它的PDB文件,但童鞋们可以在qtmaind.lib所在的文件夹中看看有木有那个东西,再看看其它类似的xxxd.lib文件是不是都有对应的PDB文件呢?看来Nokia那些吃饭的家伙懒了啊(补充:qtmain.lib是release版本的静态库,一切与调试有关的东东都和release无关,所以LZ的项目如果是编译成release版本的话,是不会收到那些警告信息的)。
第三:现在来看,不难理解那些警告信息了:翻译出来就是“你所引入的模拟缺少调试信息,就像没有调试信息一样”。
第四:解决方法,自己动手咯,Qt不是开源的么,你可以在Qt的官方网站上下载Qt库的源代码,注意哟,是MSVS中使用的Qt库的源代码,自己用MSVS编译一下生成qtmaind.lib的静态库和qtmaind.pdb,然后再将这个宝贵的qtmain.pdb文件拷入你Qt库中,和qtmaind.lib在同一个文件夹下,OK,问题就能解决也,这也根本不是网上说的什么配置问题,就是差东西。


Add

QMAKE_LFLAGS += /ignore:4099

to your .pro file.

if you want to not create .pdb files for your executables or library add

QMAKE_CXXFLAGS += /Z7

so debug information will put in .obj files.

You maybe need to delete all Makefiles* to update the building rules. Tested in Qt Creator 2.4.1 with MSVC 2008 SP1


原创粉丝点击