博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QTWarning
阅读量:4300 次
发布时间:2019-05-27

本文共 1088 字,大约阅读时间需要 3 分钟。

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

转载地址:http://bjxws.baihongyu.com/

你可能感兴趣的文章
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>
linux进程之间通讯常用信号
查看>>
main函数带参数
查看>>
PCB布线技巧
查看>>
关于PCB设计中过孔能否打在焊盘上的两种观点
查看>>
PCB反推理念
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>
git 提示:error: unable to rewind rpc post data - try increasing http.postBuffer
查看>>
php 解决json_encode中文UNICODE转码问题
查看>>
LNMP 安装 thinkcmf提示404not found
查看>>
PHP empty、isset、innull的区别
查看>>
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>
phpstorm开发工具的设置用法
查看>>
Linux 系统挂载数据盘
查看>>