当前位置:编程学习 > wap >>

Qt,有关.pdb的warning

为了能源代码调试,自己重新编译的一次Qt源码,然后在VS里面随便建了个工程,结果
碰到2种waring,原因估计是一样的,就是不知道怎么解决,屏蔽警告就算了

第1种warning :warning LNK4099: PDB 'vc_ib_1.pdb' was not found with 'C:\QtSDK\Desktop\Qt\4.7.4\msvc2008\lib\qtmaind.lib' or at 'C:\Users\cninsanq\Documents\Visual Studio 2008\Projects\QtTest2\Debug\vc_ib_1.pdb'; linking object as if no debug info qtmaind.lib
vc_ib_1.pdb确实没有。


第2种warning :warning LNK4204: 'c:\Users\cninsanq\Documents\Visual Studio 2008\Projects\QtTest3\Debug\vc90.pdb' is missing debugging information for referencing module; linking object as if no debug info qtmaind.lib
vc90.pdb能在它指的目录中找到

project property->c/c++->output files->program database file name      $(IntDir)\vc90.pdb
project property->linker->debugging->generate program database file    $(TargetDir)$(TargetName).pdb

vc90.pdb该文件存储各个 OBJ 文件的所有调试信息并与项目生成文件驻留在同一个目录中。
$(TargetName).pdb该文件存储 .exe 文件的所有调试信息,它驻留在 \debug 子目录中。

严重怀疑源码的问题 --------------------编程问答-------------------- 不要沉啊~ --------------------编程问答-------------------- 如果不影响调试的话,直接/wd禁止掉算了。 --------------------编程问答-------------------- 顶上去~ --------------------编程问答-------------------- 我来告诉你是怎么回事吧!
第一:需要了解的知识,微软有一种文件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,问题就能解决也,这也根本不是网上说的什么配置问题,就是差东西。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,