将 Qt4 移植到 Qt5

Porting Qt4 to Qt5

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

1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall QWidget::showMaximized(void)" (__imp_?showMaximized@QWidget@@QAEXXZ)" in Funktion "_main". 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z)" in Funktion "_main". 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ)" in Funktion "_main". 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ)" in Funktion "_main". 1>object.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QWidget::QWidget(class QWidget *,class QFlags)" (__imp_??0QWidget@@QAE@PAV0@V?$QFlags@W4WindowType@Qt@@@@@Z)" in Funktion ""public: __thiscall Object::Object(class QWidget *)" (??0Object@@QAE@PAVQWidget@@@Z)". 1>ppi.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QWidget::QWidget(class QWidget *,class QFlags)" (__imp_??0QWidget@@QAE@PAV0@V?$QFlags@W4WindowType@Qt@@@@@Z)".

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

Whosebug

谢谢!

在 Visual Studio

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