将Qt4移植到Qt5:未解析的外部符号

时间:2013-01-01 03:33:45

标签: c++ qt linker porting qt5

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

我有一个很好的Qt4项目。我已经下载了Qt5-VisualStudio2010软件包,我正试图将我的项目从Qt4移植到Qt5。问题出现了。

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

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

myproject.pro file:
QT += widgets

任何人都有这种新版Qt的相似经验吗?

3 个答案:

答案 0 :(得分:3)

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

  

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

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

  

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

这也发生在我身上,我确实跟随了。

  1. 另外链接Qt5Widgetsd.lib
  2. 将项目属性'Treat Wchar_t as'更改为true(在C ++ - >语言部分)。