13

简而言之:

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

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


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

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

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在配置步骤中指定,并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 desktop -no-libjpeg -platform win32-msvc2012

这是我尝试构建时的链接器故障:

这是我的构建失败的输出:

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

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

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

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

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

4

3 回答 3

2

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

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

于 2013-01-21T07:27:23.407 回答
2

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

测试和工作:)

于 2013-01-23T15:10:51.460 回答
0

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 。

于 2017-08-23T13:32:14.157 回答