简而言之:
- 我的 64 位 Qt 版本不支持 C++11。
- 我使用 C++11 构建的 Qt 是 32 位的。
- 使用在线安装程序的 Qt5 是 32 位的
- 尽管我生命中的最后 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,而我似乎无法做到这一点。