Toa*_*oul 11 c++ compiler-construction crash visual-studio-2005
我们有一个大型Visual Studio 2005 C++/Mfc解决方案,1个项目包含大约1300个源文件(大约650 .h和650 .cpp文件).我们还使用Boost和其他一些库(COM:MSXML,Office).
最近,我添加了一些boost :: multi_index实例来加速一些事情.这一切都在大部分时间汇编.但是现在,当我正在进行完整(发布)重建时,我会在几个模块上遇到编译器崩溃.
Fatal Error C1060: "compiler is out of heap space"
Run Code Online (Sandbox Code Playgroud)
我已经尝试在预编译的头文件中减少包含(删除了除标准MFC头之外的所有内容).另外,我删除了编译器选项/ Zm200(我们在编译预编译头文件之前需要它).
奇怪的是:当我在编译器崩溃后按F7(build)时,构建过程继续没有任何问题(或者至少到下一次编译器崩溃,再次按F7).但是能够在没有任何中断的情况下完成构建将会很棒.
我可以影响各个模块的构建顺序吗?这样,我可以将"有问题"的模块放在流程的开头(并希望崩溃不只是转移到其他模块).
BTW:完整的构建大约需要90分钟.
更新:
谢谢你的回答.我能够摆脱编译器崩溃并显着减少编译时间.这是我做的:
更新2:
上面,我提到"单核机器",实际上是一个较慢的双核机器.
如果 1300 个文件需要那么长时间来编译,那么您就包含了太多不必要的头文件。我猜想人们已经将一堆头文件剪切并粘贴到 CPP 文件中,而没有考虑他们实际需要哪些头文件,以便在不应该包含的时候包含大量的头文件。我还猜测你没有在你应该在的地方提前声明类。
我建议您需要花一些时间检查您的项目并删除不必要的#includes。我怀疑这会解决您的内存不足问题,并会缩短您的编译时间。