如何在支持C++11的Windows上安装64位Qt?

如何在支持C++11的Windows上安装64位Qt?,c++,visual-studio,qt,c++11,64-bit,C++,Visual Studio,Qt,C++11,64 Bit,简言之: 我的64位Qt版本不支持C++11。 我用C++11构建的Qt是32位的。 使用在线安装程序的Qt5是32位的 尽管我在生命的最后3天里一直致力于此,但我无法从源代码中构建64位Qt5。 救命啊!在我的环境中一定有不兼容的东西,但可能是什么呢 因此,我需要在Windows上用C++11开发64位Qt应用程序。我已经找到了线程/指南、、和,但它们都不起作用或适用,尽管我注意到第二个线程/指南让我构建了支持C++11但支持32位的Qt4.8.3。第三个看起来比它应该的更复杂,还涉及到VS2

简言之:

我的64位Qt版本不支持C++11。 我用C++11构建的Qt是32位的。 使用在线安装程序的Qt5是32位的 尽管我在生命的最后3天里一直致力于此,但我无法从源代码中构建64位Qt5。 救命啊!在我的环境中一定有不兼容的东西,但可能是什么呢

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

基本上,我已经到了可以在QtCreator 2.6.1中构建Qt4.8.3并执行64位应用程序的地步,但我无法获得完全的C++11支持。它只找到VS10.0中的cl,后者对C++11的支持非常有限。找出如何让它使用VS11.0中的cl将是解决我问题的一个方法。但是当我尝试的时候

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

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

Qt5应该完全支持C++11。但当我试图从源代码构建它时,它失败了。原因似乎是,尽管在VS2012 x64 Cross Tools命令提示符下运行configure/make,但在配置步骤中指定-platform win32-2012,并根据指定QMAKE_COMPILER_DEFINES+=\u MSC_VER=1700 win32 ,在win32-msvc2010和win32-msvc2012 mkspecs中,它仍然使用VS 2010中的cl进行构建,这导致了某种冲突。下面是我的configure命令:

配置-静态-调试和发布-确认许可证-开源 -nomake测试-nomake Examples-opengl桌面-无libjpeg-平台win32-msvc2012

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

在前两段的末尾,您可以看到msvc-2010被包括在内,在之前未显示的控制台输出中,moc命令中有-D_MSC_VER=1600

所以我不知所措,有人能帮忙吗

编辑:我说过我是用Qt5构建64位应用程序的,实际上我可以在qt4.8.3的基础上构建不支持C++11的64位应用程序。如果我使用Qt5尝试此操作,则会出现以下错误:

LNK112:模块计算机类型“X86”与目标计算机类型冲突 “x64”


因此,这又导致了在64位模式下编译Qt5,这似乎是我无法做到的。

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


重要的是,我注意到,我成功地从尝试构建5.0时使用的相同提示符构建了支持4.8.3的64位C++11。刚刚更改了目录。所以同样的环境,一切。我还下载了Qt5所需的所有额外的prereq。

您可以在此处找到具有64位支持的Qt 5.0.1 SDK的预构建:


测试和工作:

我发现Qt 4.8.5 windows版本Qt-win-opensource-4.8.5-vs2008.exe位于https://download.qt.io/archive/qt/4.8/4.8.5/ 对于VC++项目。

我认为Qt库本身与C++11支持无关,您不需要Qt DLL/libs的特殊版本。@satuon我认为实际上需要兼容性,但如果不需要,那么我应该能够将C++11与我现有的4.8.3 64位版本一起使用。但是就像我说的,它只使用VS10.0中的cl编译。如果您能告诉我如何让我的64位构建看到C++11,这将解决我的问题。我的意思是,Qt库只是链接到的DLL/lib文件,外加一个自定义预处理器。Qt不是C++编译器。C++11支持取决于您使用的编译器,Windows上的编译器是MinGW或MSVC。或者你是指IDE?在本例中,由于您使用的是windows,因此可以改用Visual Studio—Qt有一个插件。它允许您将Qt创建者项目转换为VS.SLN文件。@ SATUON您是否曾经使用过一个C++版本的QT LIBS,用于QT应用程序在另一个版本中的构建?我的经验是,它们需要相同,即使在一般情况下,实际上,目标不应该关心编译的C++版本关联的LIBs。我会检查插件,但我的Qt项目还不需要它,我对VS2012不太熟悉。你看过我看到的热压机了吗!非常感谢您的提醒。现在64位版本不适用于Windows,请更深入地了解这一点@马特·菲利普斯:不,这是给windows的。检查t 他的: