【error】解决fatal error C1060: 编译器的堆空间不足与 internal compiler error

解决fatal error C1060: 编译器的堆空间不足与 internal compiler error

VS x86编译器最大访问内存为4G 这是我们就需要指定使用x64的编译器。

以VS2013,编译生成64位程序为例。由于VS默认使用32位编译器(即编译器为32位并交叉编译64位可执行文件),位于C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\cl.exe。

此时该编译器最大可访问内存<4G,在编译一些超大文件时,可能所需内存超过4G,那么cl.exe本身是32位,是访问不了超出4G内存的,所以会报编译器堆空间不足。

我们可以通过任务管理器中,找到"Microsoft C/C++ Compiler Driver",这就是编译器Cl.exe。在编译时,可以看到该进程占用内存达到接近4G时,进程退出,VS报错,说明堆空间占用已超4G,编译器崩溃了。

解决办法

打开xxx.vcxproj文件,搜索“Globals”在文件中找到<PropertyGroup Label=“Globals”, 然后在这个节点的最后加一句

 <PreferredToolArchitecture>x64</PreferredToolArchitecture>

这句话的意思就是,指定VS使用64位编译器cl.exe来进行编译,这样编译时,可访问内存将达到4GB以上,便不会报错了。

64位cl.exe位于C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\cl.exe,可以在任务管理器中查看进程所属文件位置,来判断当前编译时使用的是哪个版本的编译器。

おすすめ

転載: blog.csdn.net/qq_45254369/article/details/131905746
おすすめ