我有一个相当大的C++程序(~11mb exe)在VS2008下编译,并有兴趣看看整个程序优化是否会显着影响其性能。但是,打开整个程序优化和链接时间码生成会导致链接失败,如下所示;整个程序优化在VC2008中失败
1>c:\cpp\Win32\Atlas\tin\TINDoc.Cpp : fatal error C1083: Cannot open compiler intermediate file: '.\releaseopt\TINDoc.obj': Not enough space
1>LINK : fatal error LNK1257: code generation failed
看着任务管理器,我可以看到链接器使用越来越多的内存,直到它耗尽和炸弹。编译器运行在带有2GB或RAM和2GB页面文件的XP 32bit上。 WPO仅限于较小的应用程序和/或更大的环境,还是有任何方法让链接器在内存使用方面更加节俭。
n.b.已经转换了预编译头文件,导致编译在链接之前失败,并关闭了调试信息的输出以及可能需要额外资源的其他任何内容。 C1083的帮助表明缺少头文件或文件句柄不足,而不是空间不足。
编辑:得到它在VS2010下工作,尽管没有预编译头,但性能增益并不那么重要。我将独自离开这个选项,直到我转向更强大的VS2010版本的更强大的64位平台。
有趣的问题。什么是可用磁盘空间;你可能跑得低?我发现[Microsoft Connect上的此错误](http://connect.microsoft.com/VisualStudio/feedback/details/581207/visual-studio-2005-sp1-reproducible-linker-error-lkn1257-caused-by-c1083)这似乎符合你的症状。评论说,它已在VS 2010中修复。如果它是一个选项,你可以尝试。 – 2011-03-02 10:09:45
好像是一样的错误。当我有机会时,我会尝试VS2010,并发布我的结果。感谢您的反馈。顺便说一下,可用磁盘空间的负载。 – 2011-03-02 10:33:12
VC2008是一只脆弱的野兽。优化器在某些情况下不起作用,并且看起来像有这种情况。 – 2011-03-02 16:34:18