在Debug模式下,Qt用的运行时库为
多线程调试DLL(/MDd)
VC提供的一个小工具便可以查看库中目标模块指定的默认库,这就是dumpbin.exe。运行下面这个命令
dumpbin /DIRECTIVES my.lib
输出如下:
D:\Qt\4.3.0\lib>dumpbin /DIRECTIVES qtmaind.lib
Microsoft (R) COFF/PE Dumper Version 7.10.6030
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file qtmaind.lib
File Type: LIBRARY
Linker Directives
-----------------
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"msvcprtd"
/DEFAULTLIB:"MSVCRTD"
/DEFAULTLIB:"OLDNAMES"
Summary
8 .bss
2F .data
8833 .debug$S
7C .debug$T
72 .drectve
B5 .rdata
60 .sxdata
22BC .text
2D2 .text$x
54C .xdata$x
上面蓝色的说明就是
多线程调试DLL(/MDd)
然后在输出中找那些"Linker Directives"引导的信息,你一定会发现每一处这样的信息都会包含若干个类似"-defaultlib:XXXX"这样的字符串,其中XXXX便代表目标模块指定的缺省库名。
知道了第三方库指定的默认标准库,再用合适的选项编译我们的应用程序,就可以避免LNK2005和LNK1169链接错误。喜欢IDE的朋友,你一样可以到 "Project属性" -> "C/C++" -> "代码生成(code generation)" -> "运行时库(run-time library)" 项下设置应用程序的默认标准库版本
只要project用了qt的库,Debug下就得设置成多线程调试DLL(/MDd),这个project链接的其他库也需要统一成这个
posted on 2007-07-25 04:09
七星重剑 阅读(4877)
评论(3) 编辑 收藏 引用 所属分类:
PL--c/c++ 、
C++ lib -- Qt