简而言之:
- 我的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是我需要使用的。
基本上,我已经能够构建Qt4.8.3并在QtCreator 2.6.1中执行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,在configure步骤中指定-platform win32-2012
并指定QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WIN32
,如此此指南所述,在win32-msvc2010和win32-msvc2012 mkspecs中,它仍然使用来自VS 2010的cl进行构建,并导致某种冲突。我这里是我的configure
命令:
configure -static -debug-and-release -confirm-license -opensource -nomake tests -nomake exampmles -opengl desktop -no-libjpeg -platform win32-msvc2012
这是我尝试构建时的链接器失败:
moc
命令中有-D_MSC_VER=1600
。所以我很困惑,有人能帮忙吗?
编辑:我之前说正在使用Qt5构建64位应用程序,实际上我能够在Qt 4.8.3的构建中构建64位应用程序(不支持C++11)。如果我尝试在Qt5中进行此操作,我会收到以下错误:
LNK1112:模块机器类型“X86”与目标机器类型“x64”冲突
因此,这又回到了在64位模式下编译Qt5,但我似乎做不到。