【发布时间】:2012-07-12 12:11:53
【问题描述】:
我们有一个大型项目,大约 300 个 DLL 中 > 100 万行代码。 到目前为止,我们一直在使用 VS6。
我现在已将所有内容转换为 VS2008,所有编译、链接,更重要的是 - 运行!
==>但是...生成的编译后的 OBJ 文件要大 10 倍,而且链接速度非常慢,链接器经常会达到 >1GB 的内存。
部分含义是我需要使用 /bigobj 编译某些项目。
结果是从桌面上的大约 1:45 到 3 小时的构建。 DLL 和 LIB 的大小与旧 VS6 版本中的大小大致相同。
我已经阅读了所有可以在这里找到的内容,但没有找到解决此问题的方法。 如果它是额外的调试信息 - 我不想要它。我以前受够了。 发布的大小增加了,但没有那么多......
有人知道吗?还是我唯一的选择是将项目分解成更小的单元?重构是我唯一的希望吗?!当然,我错过了一个秘密标志......
Edit1(13/07/2012 12:20BST) 我比较了 VS6 与 VS2008 创建的 Obj 的垃圾箱。 2008 年的那个出现好像“静态链接”。在 VS6 中,它包含一些来自当前 DLL 的符号。在 VS2008 中,它包含来自(可能)它所依赖的所有库的符号。 VS6 和 VS2008 的垃圾箱大小分别为 66kb 和 32,000kb。
【问题讨论】:
-
尝试在项目设置(C++ 分支)中禁用“调试信息”。
-
“我们有一个大型项目,>1M 行代码,大约 300 个 DLL。到目前为止,我们一直在使用 VS6。” 我永远不会抱怨又是我的工作了。
-
@IvanShcherbakov - 这不会妨碍我轻松调试吗?
-
顺便说一句,这里的 Xoreax Incredibuild 客户很满意。我们在现场有一些大型构建服务器;超过 90% 的构建被卸载给他们。
-
@MSalters - 我们尝试了 incredibuild,但不幸的是我们并不满意。最初,这是我的首选方法。此外,由于链接是最大的瓶颈 - Incredibuild 无法解决这个问题。
标签: c++ visual-studio-2008 object size