我使用Visual Studio2017。在一个项目(我的目标是x64)中,出现错误:C1060,编译器空间不足,不幸地发现那里存在编译的内存限制。
监视CL.exe时,实际上确实会在达到4GB之前停止。因此,看起来CL.exe默认为32位应用程序,如以下网址所示:https ://docs.microsoft.com/zh-cn/cpp/build/how-to-enable-a-64-bit-visual-命令行上的cpp工具集
阅读完此页面后,我安装了“通用Windows平台工作负载”,希望能够访问64位版本的CL.exe。但是在编译项目时没有任何变化,而且我在Visual Studio中看不到一个选择编译器版本的选项。
我认为必须存在一个变通办法,以便一个编译单元可以使用超过4GB的内存,但是我暂时找不到它。任何帮助将非常感激。
编辑:我在调试模式下遇到限制。在发布模式下,编译工作正常。这是合理的。
默认情况下,Visual Studio使用32位工具链(即,编译器是32位并且可以交叉编译64位可执行文件)。Visual Studio 2015和2017包括所有编译器(x86,x64,arm,arm64)的32位和64位版本。
您可以通过以下两种方法选择在64位系统上使用64位工具链:
例如:
set PreferredToolArchitecture=x64
devenv
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>
我在Direct3D游戏VS模板的UWP(C ++ / WinRT)版本中使用第二种方法,我只是注意到我应该将其添加到UWP(C ++ / CX)和Win32版本中。Xbox One XDK也会在其平台构建规则中自动执行此操作。
请注意,此问题已在过去得到解答:如何使Visual Studio使用本机amd64工具链
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句