在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 
七星重剑 阅读(4931) 
评论(3)  编辑 收藏 引用  所属分类: 
PL--c/c++ 、
C++ lib -- Qt