首页 文章

Qt中的静态链接 - > VS 2008中的链接错误

提问于
浏览
0

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

警告LNK4098:defaultlib'libcmt.lib'与使用其他lib冲突; use / NODEFAULTLIB:库错误LNK2019:未解析的外部符号“private:static struct QString :: Data QString :: shared_null”(?shared_null @ QString @@ 0UData @ 1 @ A)在函数“public:thiscall QString :: QString”中引用无效)“(?? 0QString @@ QAE @ XZ)错误LNK2019:未解析的外部符号”private:static struct QByteArray :: Data QByteArray :: shared_null“(?shared_null @ QByteArray @@ 0UData @ 1 @ A)在函数中引用public: thiscall QByteArray :: QByteArray(void)“(?? 0QByteArray @@ QAE @ XZ)错误LNK2001:未解析的外部符号”private:static struct QByteArray :: Data QByteArray :: shared_null“(?shared_null @ QByteArray @@ 0UData @ 1 @ A)错误LNK2001:未解析的外部符号“public:static struct QMetaObject const QDialog :: staticMetaObject”(?staticMetaObject @ QDialog @@ 2UQMetaObject @@ B)错误LNK2001:未解析的外部符号“public:static struct QMetaObject const QDialog :: staticMetaObject“(?staticMetaObject @ QDialog @@ 2UQMetaObject @@ B)错误LNK2001:未解析的外部符号”publi c:static struct QMetaObject const QDialog :: staticMetaObject“(?staticMetaObject @ QDialog @@ 2UQMetaObject @@ B)错误LNK2019:未解析的外部符号”public:static enum QSysInfo :: WinVersion const QSysInfo :: WindowsVersion“(?WindowsVersion @ QSysInfo @ @ 2W4WinVersion @ 1 @ B)在函数_WinMain @ 16中引用

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

3 回答

  • 0

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

  • 0

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

  • 0

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

相关问题