【问题标题】:Porting Qt4 to Qt5将 Qt4 移植到 Qt5
【发布时间】:2025-12-29 13:35:11
【问题描述】:

我正在尝试将我的 Qt4 Vs2005 项目移植到 Qt5 Vs2012。 编辑包含路径并将链接器依赖项从 QtCored4.lib;QtGuid4.lib;QtNetworkd4.lib; 更改为 Qt5Cored.lib;Qt5Guid.lib;Qt5Networkd.lib; 后,我仍然收到数百个链接错误:

1>main.obj : 错误 LNK2019: Verweis auf nicht aufgelöstes externes 符号 ""__declspec(dllimport) public: void __thiscall QWidget::showMaximized(void)" (__imp_?showMaximized@QWidget@@QAEXXZ)" 在功能“_main”中。 1>main.obj:错误 LNK2019:Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z)”在函数“_main”中。 1>main.obj:错误 LNK2019:Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ)" 在 功能“_main”。 1>main.obj:错误 LNK2019:Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ)" 在函数 "_main" 中。 1>object.obj:错误 LNK2019:Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QWidget::QWidget(类 QWidget *,类 QFlags)" (__imp_??0QWidget@@QAE@PAV0@V?$QFlags@W4WindowType@Qt@@@@@Z)" 在 Funktion ""public: __thiscall Object::Object(class QWidget *)" (??0Object@@QAE@PAVQWidget@@@Z)"。1>ppi.obj:错误 LNK2001:Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QWidget::QWidget(类 QWidget *,类 QFlags)" (__imp_??0QWidget@@QAE@PAV0@V?$QFlags@W4WindowType@Qt@@@@@Z)"。

这里被告知从项目窗口运行qmake,但我找不到qmake 的任何按钮?

*

谢谢!

【问题讨论】:

  • 你需要添加Qt5Widgetsd.lib,你做了吗?
  • 谢谢你这解决了问题!现在唯一的问题是,qt 将问号打印到黑色方块中,而不是打印度数符号°,但我想我稍后会解决这个问题。有没有更简单的方法来移植 Qt 项目,或者这是我做的正确方法?

标签: visual-studio-2012 linker qt4 qt5 porting


【解决方案1】:

在 Visual Studio 中从 Qt4 迁移到 Qt5

  1. 只需在新版本中打开您的项目。与 Qt5 集成的 Visual Studio
  2. 打开菜单Qt5 -> Qt项目设置
  3. Properties 选项卡中,选择所需的 Qt5 版本:
  4. 切换到Qt Modules 选项卡并检查所需的模块。通常,您应该选择 CoreGuiWidgets,可能还有其他一些(取决于您的项目):
  5. 按 Ok,然后转到菜单 Project -> your_proj_name Properties
  6. 转到配置属性 -> 链接器 -> 输入 em> -> Additional Dependecies,然后从 Qt4 库中删除旧的依赖项。 (不要忘记为您的所有配置(DebugRelease 等)执行此操作

【讨论】:

  • 我在 Qt5-Menu 中没有任何 Qt Project Settings
  • 您使用什么版本的 Qt Visual Studio 插件?你可以在这里下载最后一个:download.qt.io/official_releases/vsaddin/…。您的项目是否转换为 Qt VS 插件项目
  • 我已经在使用 1.2.4 版本。 “项目转换为 Qt VS 插件项目”是什么意思?
  • 我的意思是 Qt5 -> 将项目转换为 Qt 插件项目。如果不想转换,可以使用选项 Qt5 -> Change project's Qt Version
  • 谢谢!使用您的解决方案,我只需要更改一些包含路径!而且我还需要一些依赖项:Qt5Cored.lib;Qt5Guid.lib;Qt5Networkd.lib; 我现在不需要,是否需要全部,但不添加它们编译仍然无法工作。