在Visual Studio中使用64位编译器

bra*_*min 11 c++ cl visual-studio-2017

我使用的是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-工具集-上的命令行

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

我假设必须有一个解决方法,能够为一个编译单元使用超过4GB,但我现在找不到它.任何帮助将非常感激.

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

Chu*_*urn 15

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

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

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

例如:

set PreferredToolArchitecture=x64
devenv
Run Code Online (Sandbox Code Playgroud)
  1. 您可以vcxproj使用以下<PreferredToolArchitecture>x64</PreferredToolArchitecture>元素编辑文件以执行此操作:

例如:

<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>
Run Code Online (Sandbox Code Playgroud)

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

请注意,此问题已在过去得到解答:如何使Visual Studio使用本机amd64工具链