Visual Studio Express:致命错误c1060,编译器没有堆空间

时间:2014-05-28 16:26:16

标签: visual-studio visual-c++ visual-studio-2012 compiler-errors

我尝试使用VC 11从源代码构建程序,当编译器完成时,会引发标题错误。 正如我在这里以及其他论坛中所读到的那样,我一直试图关闭尽可能多的程序并扩大Windows中交换文件的大小......它们不起作用。

我已经读过一个名为\ Zm的参数,但我不明白如何使用它。

你能帮帮我吗?

5 个答案:

答案 0 :(得分:4)

看看this documentation which gives possible solutions

我也遇到了这个问题,发现文档很有用。要点:

  
      
  1. 如果编译器也发出错误C1076和C3859,请使用/ Zm编译器选项降低内存分配限制。更多的堆空间   如果您降低剩余内存,则可以使用您的应用程序   分配

         

    如果已设置/ Zm选项,请尝试将其删除。堆空间可能是   因为选项中指定的内存分配限制而耗尽   太高了。如果删除/ Zm,编译器将使用默认限制   选项。

  2.   
  3. 如果要在64位平台上进行编译,请使用64位编译器工具集。有关信息,请参见如何:启用64位Visual C ++   命令行上的工具集。

  4.   
  5. 在32位Windows上,尝试使用/ 3GB boot.ini开关。

  6.   
  7. 增加Windows交换文件的大小。

  8.   
  9. 关闭其他正在运行的程序。

  10.   
  11. 消除不必要的包含文件。

  12.   
  13. 消除不必要的全局变量,例如,通过动态分配内存而不是声明大型数组。

  14.   
  15. 消除未使用的声明。

  16.   
  17. 将当前文件拆分为较小的文件。

  18.   

答案 1 :(得分:1)

我不能多说/ Zm参数,但我有同样的问题(编译器没有堆空间)。

帮助我的是/ m:4(CPU的计数为4)参数,以便您可以使用多个CPU进行构建。

希望对你有所帮助。

此外,如果您在x64上运行,请确保使用x64版本的“msbuild.exe”和“cl.exe”。我有一个问题,即使使用例如x64 ms powershell,编译器仍然会选择32位版本的msbuild.exe(在任务管理器“msbuild.exe * 32”,windows 7中)

答案 2 :(得分:1)

我们有类似的问题:一个相对简单的程序(虽然,充满模板,使用Eigen库)一直无法在其中一台计算机上编译。所有都使用MSVC2013 x64,但由于C1060错误,只有一个无法编译程序。我们尝试了不同的编译器标志,设置/取消设置-Zm,但未能在不修改代码的情况下解析它。

然而,当我们从x64 / x64(64位编译器,64位生成的可执行文件)编译器切换到x86 / x86(32位编译器,32位生成可执行文件)时,给了我们一些指示。 x86编译器为我们提供了程序中有问题部分的确切位置 - 调用接收重模板对象的模板函数。我们已经将这些函数改写为普通函数(构建在不同的目标文件中)并解决了这个问题......

答案 3 :(得分:1)

除了这里的其他答案(在我的情况下),fatal error C1060: compiler is out of heap space可能是由语法错误引起的。以下代码(在某些情况下)即使使用正确的编译器选项也会导致此错误 - 例如,如果您以前成功编译过相同的程序。

r.push_back(e[1];

而不是

r.push_back(e[1]);

error C2143: syntax error: missing ')' before ';'r属于某些类型时,它似乎只会导致此错误而不是标准e,但是如果该程序有值得检查您最近编辑过的任何代码以前编译没有错误。

答案 4 :(得分:0)

VS:Visual Studio 2015 操作系统:Windows10

如果您将VS2015用作IDE,也许还有另一种解决方案: 转到更新VS2015“ Update3”软件包,一切将顺利进行。