随笔 - 505  文章 - 1034  trackbacks - 0
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345


子曾经曰过:编程无他,唯手熟尔!

常用链接

留言簿(94)

随笔分类(649)

随笔档案(505)

相册

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

积分与排名

  • 积分 - 903796
  • 排名 - 14

最新随笔

最新评论

阅读排行榜

评论排行榜

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

FeedBack:
# re: 链接使用Qt的vc项目时出现LNK2005的错误的解决办法(一把辛酸泪啊,整了10个小时) 2007-07-25 09:14 梦在天涯
恩,一般使用界面lib的,都的设置成多线程  回复  更多评论
  
# re: 链接使用Qt的vc项目时出现LNK2005的错误的解决办法(一把辛酸泪啊,整了10个小时) 2007-07-25 09:53 万连文
是的,否则会提示很多冲突。  回复  更多评论
  
# re: 链接使用Qt的vc项目时出现LNK2005的错误的解决办法(一把辛酸泪啊,整了10个小时) 2007-07-25 11:40 pass86
ACE也这样。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理