【问题标题】:Qt5 Project on Windows with MinGW带有 MinGW 的 Windows 上的 Qt5 项目
【发布时间】:2013-09-26 22:43:12
【问题描述】:

我一直在将 Visual Studio 2012 用于 Qt/C++ 项目。

我正在尝试迁移到 MinGW,以便我可以完全使用 C++11,而不是 MSFT 编译器提供的部分支持。使用 CMake 生成项目并制作非常顺利,编译了所有子项目和主项目本身。

但是,链接给了我一些错误,我不知道如何解决它们:

链接 CXX 可执行文件 Owl.exe CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x1e): 对__imp__ZN9QTreeViewC2EP7QWidget' CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x7b): undefined reference to_imp_ZN9QTreeViewD2Ev' 的未定义引用 CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x116): 对__imp__ZNK17QAbstractItemView5modelEv' CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x1a1): undefined reference to _imp_ZNK18QStandardItemModel9findItemsERK7QString6QFlagsIN2Qt9MatchFlagEEi' 的未定义引用 CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x303): 对__imp__ZN8QVariantD1Ev' CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x350): undefined reference to_imp_ZeqRK7QStringS1_'的未定义引用 CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x53e): 对__imp__ZN8QVariantD1Ev' CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x649): undefined reference to _imp_ZNK9QTreeView10indexBelowERK11QModelIndex' 的未定义引用 CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x669): 未定义对__imp__ZNK17QAbstractItemView5modelEv' CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x6b1): undefined reference to _imp_ZN17QAbstractItemView15setCurrentIndexERK11QModelIndex' 的引用 CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x6c1): 对__imp__ZN8QVariantD1Ev' CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):BoardTreeView.cpp:(.text+0x6d6): undefined reference to_imp_ZN8QVariantD1Ev' 的未定义引用 c:/progra~1/mingw-~1/x64-48~1.1-p/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../ ../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\Owl.dir/objects.a(BoardTreeView.cpp.obj):错误的重定位地址 `.text$_ZNSt9exceptionC2Ev[_ZNSt9exceptionC2Ev]' 部分中的 0xf collect2.exe:错误:ld 返回 1 退出状态 Deltas\CMakeFiles\Owl.dir\build.make:1217:目标配方 'Deltas/Owl.exe' 失败 mingw32-make[2]: * [Deltas/Owl.exe] 错误 1 CMakeFiles\Makefile2:435:目标配方 'Deltas/CMakeFiles/Owl.dir/all' 失败 mingw32-make[1]: [Deltas/CMakeFiles/Owl.dir/all] 错误 2 Makefile:115: 配方 目标 'all' 失败 mingw32-make: ** [all] 错误 2

使用 Visual Studio(和 Xcode、FWIW)可以很好地编译和链接项目,所以我不确定链接器缺少什么。

谁能给点建议?

【问题讨论】:

  • 建议:不要使用 MinGW 编译器,它真的很糟糕。您可以自己对 MinGW 进行基准测试并将其与免费的 Visual Studio Express(任何版本)进行比较,您将看到 Visual Studio Express 至少有 200% 的性能提升。
  • 我昨天花了很大一部分时间试图让 Qt5 使用 64 位 MinGW 构建。当我看到构建 WebKit 的步骤时,我最终放弃了。我坚持使用 Visual Studio,只需要等待 MSFT 完成 C++11 支持。

标签: c++ qt c++11 mingw-w64


【解决方案1】:

您需要下载 Qt for MinGW(或自行构建,如果您使用的 MinGW 版本与构建 Qt 发行版的版本不同。)Qt 的 VS 版本不能与 MinGW 一起使用。

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2012-10-11
    相关资源
    最近更新 更多