Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Creator 2.6.1+;Qt 5+;C++;11+;MSVC2010编译器 我试图用Qt.在Windows上构建C++应用程序。_C++_Visual Studio 2010_Visual C++_C++11_Qt5 - Fatal编程技术网

Qt Creator 2.6.1+;Qt 5+;C++;11+;MSVC2010编译器 我试图用Qt.在Windows上构建C++应用程序。

Qt Creator 2.6.1+;Qt 5+;C++;11+;MSVC2010编译器 我试图用Qt.在Windows上构建C++应用程序。,c++,visual-studio-2010,visual-c++,c++11,qt5,C++,Visual Studio 2010,Visual C++,C++11,Qt5,我的设置是: 已安装VS200820102012 已安装Qt 5 RC1 现在,当我#包括并尝试使用std::unique#ptr时,它告诉我它没有定义,所以我查看了VS2010标题,发现需要定义#HAS#CPP0X,所以我将它添加到.pro as DEFINES+=#HAS#CPP0X 这仍然没有效果,所以我按住ctrl键并单击了#include memory only,从以下位置使用内存标题找到了它: C:\ProgramFiles(x86)\Microsoft Visual Studio

我的设置是:

  • 已安装VS200820102012
  • 已安装Qt 5 RC1
  • 现在,当我#包括并尝试使用std::unique#ptr时,它告诉我它没有定义,所以我查看了VS2010标题,发现需要定义#HAS#CPP0X,所以我将它添加到.pro as DEFINES+=#HAS#CPP0X

    这仍然没有效果,所以我按住ctrl键并单击了#include memory only,从以下位置使用内存标题找到了它:

    C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\VC\include

    里面没有任何std::unique\u ptr

    当然,它应该关注:

    C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\VC\include

    我想我应该通过完整路径包含内存,但这仍然失败,因为包含的内存头本身存在与C++11相关的错误,例如移动和右值引用

    所以我想知道的是:

  • Windows上的Qt能否使用Vs2010支持的C++11功能
  • 如果是,那怎么办
  • 如果没有,那么我非常失望,因为在Linux上开发跨平台Qt5应用程序意味着它不跨平台,因为它不可能为任何其他平台构建 编辑:


    因此,解决方案很清楚:下载Qt5的源代码并使用MinGW构建它,您就完全准备好了(包括公认答案中的C++11 pro选项)

    < p>我正在运行Qt Cudio2.06,假设选项菜单没有改变,如果你去工具>选项>构建和运行,然后寻找编译器标签,你应该看到一个自动检测编译器的列表,希望包括微软Visual C++编译器10。如果没有,可以手动添加

    至于C++11支持,如果您正在使用cmake并将项目导入QT Creator,则可以将其添加到cmake文件:set(cmake_CXX_FLAGS“-std=C++0x”)

    如果您使用的是qmake,那么每一组qmake_cxflags+=-std=c++0x

    编辑: Visual Studio 2010(Visual C++ 10)默认启用C++ 11支持,但应该注意它只是一个子集,这里是相关的。

    < P> NO./P> Windows上的Qt能否使用Vs2010支持的C++11功能

    为此,您必须获得Visual 2012

    如果没有,那么我非常失望,因为在Linux上开发跨平台Qt5应用程序意味着它不跨平台,因为它不可能为任何其他平台构建

    在mac上,使用XCode 4编译器CLang 2,在任何平台上,基于GCC 4.7的编译器都可以工作

    CONFIG += c++11
    

    在你的.pro文件中。但是强烈建议您将编译器升级到最新的
    g++
    clang

    即使VS2010支持许多C++11功能,如auto/unique\u ptr/lambda等,Hi auto和nullptr yes。unique_ptr,我不这么认为,但请检查这里:但是如果我打开VS2010 IDE而不是QtCreator,并使用std::unique_ptr创建一个hello world,它似乎是受支持的,因为它构建/运行/等等。这很好,我不知道细节,我知道移动语义在2010年不受支持,for(x:y)不受支持,以及其他东西,您可以在此网页上查看详细信息。我知道这是部分支持的,原子学不是。。。因此,博客必须过时或是:“Visual C++ 2010将移动语义引入标准模板库(STL)”,你是对的,选项是相同的,但是选择编译器会导致CLO.EXE没有发现的构建错误?那些默认设置了编译器的qmake标志抱怨它不知道-std=c++0x是什么意思(无法识别的选项)。我相信这将回答您在cl.exe上的问题,我已经添加了一个关于c++0x的注释。我将在明天之前添加到路径,虽然我确信它已经在路径中了,因为从cmd.exe运行cl.exe是有效的<代码> -STD= C++ 0x/<代码>是一个代码> G++< /COD>标志,并且不被Visual C++ 2010/12所识别。注意,转换编译器也意味着需要重新编译整个QT,这需要先安装脚本语言等一堆先决条件。所以,一种选择就是现在就在Linux上开发,一旦有了VC++2010以外的预构建的Windows二进制文件,就可以添加Windows支持。。。我希望不会太长。点击几下,您就具备了所有基本的先决条件。认为这是一个值得投入的时间。接受这个答案,因为我在Windows上工作的唯一方式是使用新的明文/g++。