与VS6相比,VS2008 C++编译中的巨大OBJ文件

aab*_*ich 10 c++ size object visual-studio-2008

我们有一个大型项目,大约300个DLL中有大约1M行代码.到目前为止,我们一直在使用VS6.

我现在已将所有内容转换为VS2008,所有编译,链接以及更重要的 - 运行!

==>但是......生成的编译后的OBJ文件X 10更大,链接速度非常慢,链接器经常会占用> 1GB的内存.

部分含义是我需要使用/ bigobj编译某些项目.

结果是从桌面上的大约1:45到3小时的构建.DLL和LIB的大小与旧的VS6版本大致相同.

我已经阅读了我在这里找到的所有内容,但没有找到解决这个问题的方法.如果是额外的DEBUG信息 - 我不想要它.我以前吃够了.释放的大小增加了,但没有那么多......

任何人有任何想法?或者是我唯一的选择将项目分解成更小的单位?重构我唯一的希望吗?!当然,我错过了一个秘密的旗帜......


Edit1(13/07/2012 12:20BST) 我比较了VS6和VS2008创建的Obj的dumpbin.2008年的那个似乎 "静态链接".在VS6中,它包含来自当前DLL的几个符号.在VS2008中,它包含来自(可能)所依赖的所有库的符号.VS6和VS2008的Dumpbin尺寸分别为66kb和32,000kb.


MSa*_*ers 5

检查调试选项./Z7导致大的.OBJ文件,/Zi将相同的信息放在单独的.PDB文件中.

编译器选项/Oi可能有助于内联函数,然后不再需要链接.你可能不想再调试memset.

关闭/Gm(增量重建),以便打开/MP(并行构建).同时关闭/Gy- 虽然它使得较小的EXE,但它会导致更大的OBJ文件和更慢的链接.