【问题标题】:Porting Qt4 to Qt5: unresolved external symbols将 Qt4 移植到 Qt5:未解析的外部符号
【发布时间】:2012-12-15 23:17:54
【问题描述】:

Qt5是Qt的新一代,有一些变化。

我有一个使用 Qt4 构建的项目。我已经下载了 Qt5-VisualStudio2010 包,我正在尝试将我的项目从 Qt4 移植到 Qt5。问题出现了。

所有“包含”路径都已修复。但是,编译器现在会报告数百个“未解析的外部符号”(几乎所有函数调用,听起来编译器都找不到任何 .lib 文件)。我什至尝试添加在 Qt SDK 文件夹中找到的所有 .lib 文件,但没用。最基本的类和方法:QApplication::exec(...) 也报'unresolved symbol'。

项目文件已更改为适合 Qt5 打包:

myproject.pro file:
QT += widgets

有人对这个新版本的 Qt 有过类似的体验吗?

【问题讨论】:

    标签: c++ qt linker porting qt5


    【解决方案1】:

    来自“qt_newbie89”(http://qt-project.org/forums/viewthread/23200):

    我“无意中”解决了这个问题。我右键单击 项目窗口中的项目文件夹,然后选择 qmake。在那之后, 选择运行,所有错误都消失了。我不知道为什么会这样 顺便说一句。

    来自“ChrisW67”(http://qt-project.org/forums/viewthread/23253/):

    Makefile 文件没有“损坏”:它与您的完全一样 离开它,充满了适合之前 Qt 4 的命令和路径 安装。当 Qt Creator 运行 nmake 来构建项目时,nmake 做了 不会自动重新运行 qmake 以生成 Makefile,因为 (原样)Makefile 比生成它的 pro 文件更新。 这是正常且正确的 make 行为,但它导致了 您安装的 Qt5 与预期的 Qt4 安装不匹配。

    我的话: 是的,这确实解决了链接问题!问题实际上是,当使用 Qt4 创建项目时,“make”文件也很好地与项目一起创建。当我删除 Qt4,安装 Qt5 并通过 Qt5(使用新的 Qt Creator)导入旧项目时,“make”文件可能已损坏。

    【讨论】:

      【解决方案2】:

      我怀疑你不会是唯一遇到这个问题的人。你看过:this了吗?它讨论了 qt/base/bin 中的一个 PERL 脚本,名为:fixqt4headers.pl。这旨在修复标题。我注意到另一个链接如果不能解决您的问题,可能会有所帮助,请尝试this,它看起来经过深思熟虑。而且,不,我没有尝试过。我实际上还没有升级到 Qt 5。干杯!

      【讨论】:

        【解决方案3】:

        这也发生在我身上,我也关注了。

        1. 额外链接的 Qt5Widgetsd.lib
        2. 将项目属性“将 Wchar_t 视为内置”更改为 true(在 C++ -> 语言部分)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-09
          • 1970-01-01
          相关资源
          最近更新 更多