我有一个包含大量模板的C ++项目,但无法使用fatal error C1060: compiler is out of heap space
进行编译。有足够的空闲内存。我尝试使用/ Zm编译器选项付费,但它没有帮助。我可以看到Visual Studio使用32位版本的编译器,我认为这是导致此错误的原因。有没有办法强制Visual Studio使用64位编译器?
更新
我的问题不重复。我看到了其他问题,并尝试了这些建议。但在我的情况下,编译器需要超过6 GB的RAM来编译项目。这是64位编译器分配的最大RAM量。我可以在使用msbuild
构建项目时使用64位编译器,但我想从Visual Studio构建它,默认情况下它使用32位编译器。我想强制它使用64位编译器。 64位编译器是指编译器不仅创建64位应用程序,而且还是64位应用程序本身。
答案 0 :(得分:1)
参考https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx?f=255&mspperror=-2147217396#Anchor_1,可以使用 x64 64位原生的编译器。
为此,正如https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx#Anchor_0所述,
在命令提示符下运行vcvarsall amd64
。
然后,在命令行上运行devenv
时,添加/useenv
选项:
如果您使用 DEVENV 进行命令行构建,则vcvarsall.bat或vcvars32.bat 设置的环境不会影响您的构建,除非您还指定/ useenv 选项。
答案 1 :(得分:1)
正如 Hans Passant 在评论中所建议的那样,此问题的解决方案是将可执行目录更改为指向64位的那个可执行目录二进制文件。
要执行此操作,您需要转到C ++项目属性→VC ++目录→Visual Studio中的可执行目录,并将值替换为
$(VC_ExecutablePath_x64_x64);$(WindowsSDK_ExecutablePath_x64);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(FxCopDir);$(PATH)
此更改强制Visual Studio使用64位C ++编译器。