代码之家  ›  专栏  ›  技术社区  ›  ToastedSoul

如何解决Visual Studio编译器崩溃的问题

  •  11
  • ToastedSoul  · 技术社区  · 16 年前

    我们有一个大型的Visual Studio 2005 C++/Mfc解决方案,一个包含约1300个源文件(约650.h和650.cpp文件)的项目。我们还使用Boost和其他一些库(COM:MSXML、Office)。

    Fatal Error C1060: "compiler is out of heap space"
    

    我已经尝试减少预编译头文件中的包含(除了标准MFC头文件外,几乎删除了所有内容)。此外,我还删除了编译器选项/Zm200(我们之前需要它来编译预编译头文件)。

    我可以影响单个模块的构建顺序吗?这样,我可以将“有问题”的模块放在流程的开始(并希望崩溃不会转移到其他模块)。

    顺便说一句:一个完整的构建大约需要90分钟。


    更新:

    谢谢你的回答。我能够摆脱编译器崩溃,并显著减少编译时间。以下是我所做的:

    1. 我从预编译头文件中删除了所有包含,只保留了标准的windows/mfc头文件。这迫使我在其他模块中添加更多的包含,但最终所有内容都包含在需要的地方。当然,这一步增加了编译时间,但让我在下一步更有效率。
    2. 我安装了试用版 ProFactors IncludeManager
    3. 大多数编译时间都浪费在几个头文件上,这些头文件包含了一堆其他头文件(其中还包括一些……)。我不得不使用前向声明来摆脱一些讨厌的依赖关系。此外,我还将一些类/函数从关键头文件移到了它们自己的模块中。
    4. What to put in precompiled header? (MSVC)
    5. 我禁用了所有内容的浏览信息生成,因为我们似乎没有使用它(而且我找不到任何关于它真正有用的信息……)。这又中断了构建过程的6分钟。
    6. 我在C++编译器命令中添加了/MP(多处理器支持)开关。现在重建时间缩短到22分钟。这一切都是在单核PC上完成的。
    7. 我将整个解决方案转移到双核PC上。在那里重建项目需要16分钟。
    8. 创建调试版本快5分钟:
      • 在单芯机上运行17分钟,

    3 回复  |  直到 9 年前
        1
  •  3
  •   Goz    16 年前

        2
  •  2
  •   Community Mohan Dere    9 年前

    this (SO) post 查看帮助删除冗余头文件的方法。

    我们的C++解决方案的大小很粗略,过去编译需要50分钟,通过仔细的头文件分析,我们把编译时间缩短到了8分钟。

        3
  •  0
  •   MSalters    16 年前

    推荐文章