什么是“增量链接”?

时间:2010-07-28 02:40:26

标签: incremental-linking

我看过微软的MSDN和网络上的所有内容,但我仍然无法真正了解它是什么。

这是否意味着已完成的程序在执行期间的不同时间加载DLL,并在启动时立即同时加载所有DLL?

我完全离开了吗? :)

2 个答案:

答案 0 :(得分:112)

链接涉及将源文件构建的所有.obj文件以及您引用的任何.lib文件打包到输出中(例如.exe或.dll)。

如果没有增量链接,每次都必须从头开始。

增量链接以一种方式链接你的exe / dll,这使得链接器在你进行小的更改和重新编译时更容易更新现有的exe / dll。

因此,增量链接只会使编译和链接项目变得更快。

它可能具有的唯一运行时效果是它可能会使你的exe / dll稍微变大和变慢,如下所述:

http://msdn.microsoft.com/en-us/library/4khtbfyf.aspx

编辑:正如Logan所提到的,增量链接也与link time code generation不兼容 - 因此失去了可能的性能优化。

您可能希望对调试版本使用增量链接来加速开发,但是为发布版本禁用它以提高运行时性能。

延迟加载的DLL可能是您的想法:

http://msdn.microsoft.com/en-us/library/151kt790.aspx

答案 1 :(得分:14)

另外,非常重要的是,增量链接是Edit&Continue的先决条件 - 可能会编辑代码并在不重新启动的情况下重新编译代码。

因此,调试版本是一件好事,但不是发布版本。