c – 如何解决Visual Studio编译器崩溃
我们有一个大型的Visual Studio 2005 C / Mfc解决方案,1个项目有大约1300个源文件(所以大约650 .h和650 .cpp文件).我们还使用Boost和其他几个库(COM:MS
XML,Office).
最近,我已经添加了一些boost :: multi_index的例子来加速事情.这大部分时间都是编译的.但现在,当我正在进行一次完整的(发布)重建时,我会在几个模块中导致编译器崩溃. Fatal Error C1060: "compiler is out of heap space" 我已经尝试减少包含在预编译的头文件(除了标准的MFC标头除了几乎所有的东西).此外,我已经删除了编译器选项/ Zm200(我们之前需要编译预编译的头文件). 奇怪的是:当我在编译器崩溃后刚刚按F7(构建),构建过程继续没有任何问题(或至少到下一个编译器崩溃,我再次按F7).但是,无需任何休息就能够完成一个完整的构建,这将是件好事. 我可以影响单个模块的构建顺序吗?这样,我可以将“有问题的”模块放在进程的开始(并希望崩溃不只是转移到其他模块). BTW:一个完整??的构建需要大约90分钟. 更新: 感谢您的答案.我能够摆脱编译器崩溃并大大减少编译时间.这是我做的: >我从预编译的头文件中删除了所有包含的内容,只是标准的windows / mfc标题是保留的.这迫使我将更多的内容添加到其他模块中,但最终将所有内容都包含在需要的位置.当然这个步骤增加了编译时间,但让我在下一步更有效率. > 17分钟在单核机上, 更新2: 以上,我提到“单核机”,实际上是一个较慢的双核机器. 解决方法
如果1300个文件需要很长时间才能编译,那么您将包含太多头文件,这些头文件是不重要的.我猜猜,人们已经将一堆头版文件剪切并粘贴到CPP文件中,而不用考虑他们实际需要的标题,以便在不应该包含它们时加载它们.我也猜测你不是在宣布你应该在哪里上课.
我建议你需要花费一些时间来完成你的项目,并删除不必要的#includes.我怀疑这将解决您的内存不足问题,并会提高编译时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |