【问题标题】:How install 64-bit Qt on Windows with C++11 support?如何在支持 C++11 的 Windows 上安装 64 位 Qt?
【发布时间】:2013-01-03 10:11:37
【问题描述】:

简而言之:

  1. 我的 64 位 Qt 版本不支持 C++11。
  2. 我使用 C++11 构建的 Qt 是 32 位的。
  3. 使用在线安装程序的 Qt5 是 32 位的
  4. 尽管我生命中的最后 3 天一直致力于此,但我无法从源代码构建 64 位 Qt5。

帮助!我的环境中一定有一些不兼容的东西,但它可能是什么?


所以,我需要在 Windows 上使用 C++11 开发 64 位 Qt 应用程序。我找到了线程/指南hereherehereherehere,但它们都不起作用或适用,尽管我注意到其中的第二个让我构建 Qt 4.8.3 C++11 支持(但 32 位)。第三个看起来比它应该的更复杂,并且还涉及使用 VS 2010 构建,这似乎是问题的一部分,所以我没有尝试过。我也浪费了很多时间尝试使用不同的编译器构建以前的版本,比如 mingw 和 clang,所以我很确定 cl 是我需要使用的。

基本上,我已经可以在 QtCreator 2.6.1 中构建 Qt4.8.3 并执行 64 位应用程序,但我无法获得完整的 C++11 支持。它只从 VS 10.0 中找到 cl,它只有非常有限的 C++11 支持。弄清楚如何让它在 VS 11.0 中使用 cl 将是我的问题的一种解决方案。但是当我尝试

QMAKE_CXX = C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/cl

构建失败并出现 jom 错误 2,如果我选择使用 nmake 构建的选项,我会收到类似的错误。

Qt 5 应该有完整的 C++11 支持。但是当我尝试从源代码自己构建它时,它失败了。其原因似乎是,尽管从 VS2012 x64 Cross Tools 命令提示符运行 configure/make,在配置步骤中指定 -platform win32-2012,并按照
this guide 指定 QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WIN32,在 win32- msvc2010 和 win32-msvc2012 mkspecs,它仍然使用 VS 2010 的 cl 构建,这会导致某种冲突。这是我的configure 命令:

配置 -static -debug-and-release -confirm-license -opensource -nomake 测试 -nomake 示例 -opengl 桌面 -no-libjpeg -platform win32-msvc2012

这是我尝试构建时的链接器失败:

在前 2 段的末尾,您可以看到包含 msvc-2010,并且在控制台输出(未显示)的前面,moc 命令中有 -D_MSC_VER=1600

所以我很茫然,有人可以帮忙吗?

编辑:我曾说过我正在使用 Qt5 构建 64 位应用程序,实际上我能够在构建后构建 64 位应用程序(不支持 C++11) Qt 4.8.3 的。如果我用 Qt5 尝试这个,我会得到这个错误:

LNK1112:模块机器类型“X86”与目标机器类型冲突 'x64'

所以这会导致在 64 位模式下编译 Qt5,而我似乎做不到。

【问题讨论】:

  • 我不认为 Qt 库本身与 C++11 支持有任何关系,您不需要 Qt DLL/库的特殊构建。
  • @satuon 我认为实际上需要兼容性,但如果不是,那么我应该能够将 C++11 与我拥有的 4.8.3 64 位版本一起使用。但是就像我说的那样,它只能使用 VS 10.0 中的 cl 编译。如果你能告诉我如何让我的 64 位版本看到 C++11 可以解决我的问题。
  • 我的意思是,Qt 库只是您链接到的 DLL/lib 文件,外加一个自定义预处理器。 Qt 不是 C++ 编译器。 C++11 支持取决于您使用的编译器,在 Windows 上是 MinGW 或 MSVC。还是您的意思是 Qt Creator(IDE)?在这种情况下,由于您使用的是 Windows,因此可以改用 Visual Studio - Qt 有一个插件。它允许您将 Qt Creator 项目转换为 VS .sln 文件。
  • @satuon 您是否曾经使用过来自一个 c++ 版本的 Qt 库,用于构建另一个 Qt 应用程序?我的经验是它们需要相同,即使通常目标确实不应该关心与什么 C++ 版本相关的库是用什么编译的。我会检查插件,但我的 Qt 项目还不需要它,而且我不熟悉 VS2012。

标签: c++ visual-studio qt c++11 64-bit


【解决方案1】:

通过返回并在 64 位模式下重新构建 4.8.3,最终获得了一个“足够好”的解决方案,这次确保它是在 C++11 支持下构建的。由于涉及 Qt5 的解决方案是理想的解决方案,因此我将暂时搁置此问题,看看是否有人能弄清楚如何做到这一点。

重要的是,我注意到我成功构建了 64 位、支持 C++11 的 4.8.3 从我一直用来构建 5.0 的相同提示。只是改变了目录。所以同样的环境,一切。而且我还下载了 Qt5 所需的所有额外先决条件。

【讨论】:

    【解决方案2】:

    您可以在此处找到支持 64 位的 Qt 5.0.1 SDK 的预构建: http://releases.qt-project.org/digia/5.0.1/latest/

    测试和工作:)

    【讨论】:

    • 我看到的印刷机很热!非常感谢您的提醒。
    • 现在只是更深入地研究了这一点——64 位版本不适用于 Windows!
    • @MattPhillips 不,它适用于 Windows。检查这个:qt-mirror.dannhauer.de/archive/qt/5.6/5.6.0/…
    【解决方案3】:

    我在https://download.qt.io/archive/qt/4.8/4.8.5/ 找到了用于 VC++ 项目的 Qt 4.8.5 windows 版本 qt-win-opensource-4.8.5-vs2008.exe。

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 2011-04-18
      • 2010-12-03
      • 2012-06-13
      • 2011-04-18
      • 1970-01-01
      • 2017-04-28
      • 2011-07-13
      • 2017-04-10
      相关资源
      最近更新 更多