2010-04-24 217 views
0

今天我致力于在Qt中进行静态链接。我用Qt4 with Visual Studio and static C runtime文章。第三步花了相当长的时间。完成后,我在VS 2008中打开了我的项目,制作了Build->Clean Solution并尝试登录Release。不幸的是我得到了链接错误:Qt中的静态链接 - > VS 2008中的链接错误

警告 LNK4098:defaultlib 'LIBCMT.LIB' 冲突与使用其他库的;使用 /NODEFAULTLIB:库

错误LNK2019:无法解析的外部 符号 “私人:静态结构 的QString ::数据的QString :: shared_null” (shared_null @ QString的@@ 0UData @ 1 @?A) 函数引用“市民: __thiscall的QString :: QString的(无效)”(?? 0QString @@ QAE @ XZ)

错误LNK2019:无法解析的外部 符号 “私人:静态结构 的QByteArray ::数据 的QByteArray :: shared_null” (?shared_null @ QByteArray @@ 0UData @ 1 @ A) referen CED在功能 “市民: __thiscall的QByteArray ::的QByteArray(无效)” (?? 0QByteArray @@ QAE @ XZ)

错误LNK2001:解析外部符号 “私人:静态结构 的QByteArray ::数据 的QByteArray :: shared_null” (shared_null @的QByteArray @@ 0UData @ 1 @?A)

错误LNK2001: 解析的外部符号 “公用: 静态结构QMetaObject常量 了QDialog :: staticMetaObject” (staticMetaObject @ QDialog的@ @ 2UQMetaObject @@ B)

错误LNK2001: 解析的外部符号 “公用: 静态结构QMetaObject常量 了QDialog :: staticMetaObject” (staticMetaObject @ QDialog的@@ 2UQMetaObject @@ B')

错误LNK2001: 解析的外部符号“公: 静态结构QMetaObject常量 了QDialog :: staticMetaObject “ (staticMetaObject @ QDialog的@@ 2UQMetaObject @@ B')

错误LNK2019:无法解析的外部符号” 公用:静态枚举QSysInfo :: WinVersion常量QSysInfo :: WindowsVer锡永”(?WindowsVersion @ QSysInfo @@ 2W4WinVersion @ 1 @ B)在功能上_WinMain引用@ 16

我做错了什么?帮助解决这个问题。

回答

0

确保在重新编译Qt之后,在您自己的Qt项目上重新运行qmake。构建标志也需要在项目中更新。

0

这些说明适用于VS2005。您得到的警告是针对lib多线程静态C运行时库。就我个人而言,我不会在qmake.conf中将这些值从-MD更改为-MT和-MDd到MTd。我会离开他们,因为他们是。无论如何,如果您使用的是Visual Studio解决方案,则必须转到C++编译器选项并将这些lib设置更改为MT和MTd。

+0

试图在项目设置和重建中设置-MDD。错误依然存在。还试图生成* .pro文件和构建。有270多个链接错误。 – ChruS 2010-04-25 07:52:30

0

你可以发布你用于配置和构建Qt的命令行吗?在构建Qt时你有任何错误或重大警告吗?除非您确定自己在做什么,否则我建议不要更改.conf文件中的任何内容。它确实不应该是你需要做的。我还建议下载Windows源代码分发的全新副本,或者如果您仍然拥有该存档,请执行全新的解压缩操作,只是为了确保您之前的版本中没有任何剩余的文件可能未正确除去。然后,做你的配置和nmake。