在Visual Studio中使用64位编译器

时间:2017-10-11 08:23:50

标签: c++ visual-studio-2017 cl

我使用的是Visual Studio 2017.在一个项目中(我的目标是x64),我得到错误:C1060,编译器没有堆空间,遗憾的是在那里学习了编译时存在内存限制。

监控CL.exe时,它确实在达到4GB之前停止。所以看起来CL.exe默认是32位应用程序,如下所示:https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line

阅读本页后,我安装了#34;通用Windows平台工作负载"希望能够访问64位版本的CL.exe。但是在编译我的项目时没有任何变化,我无法在visual studio中看到一个选项来选择编译器版本。

我认为必须存在一种解决方法,才能为单个编译单元使用4GB以上的数据,但我现在无法找到它。任何帮助将不胜感激。

编辑:我在调试模式下遇到限制。编译在发布模式下运行良好。这是有道理的。

1 个答案:

答案 0 :(得分:12)

默认情况下,Visual Studio使用32位工具链(即编译器为32位并交叉编译64位可执行文件)。 Visual Studio 2015和2017包括所有编译器的32位和64位版本(x86,x64,arm,arm64)。

您可以通过两种方法选择在64位系统上使用64位工具链:

  1. 在构建计算机上添加环境变量(系统范围或VS Developer命令提示符)。
  2. 例如:

    set PreferredToolArchitecture=x64
    devenv
    
    1. 您可以使用vcxproj元素编辑<PreferredToolArchitecture>x64</PreferredToolArchitecture>文件以执行此操作:
    2. 例如:

      <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
        <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
          <ConfigurationType>Application</ConfigurationType>
          <UseDebugLibraries>true</UseDebugLibraries>
          <PlatformToolset>v141</PlatformToolset>
          <PreferredToolArchitecture>x64</PreferredToolArchitecture>
          <CharacterSet>Unicode</CharacterSet>
        </PropertyGroup>
      

      我在我的Direct3D Game VS Templates的UWP(C ++ / WinRT)版本中使用第二种方法,我只是注意到我应该将它添加到我的UWP(C ++ / CX)和Win32版本中。 Xbox One XDK也可以在其平台构建规则中自动执行此操作。

        

      请注意,此问题已在过去得到解答:How to make Visual Studio use the native amd64 toolchain

相关问题