什么是"增量链接"?

Rus*_*sel 101 incremental-linking

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

这是否意味着已完成的程序在执行期间的不同时间加载DLL,因为它们在启动时立即被应用于所有DLL?

我完全离开了吗?:)

Sax*_*uce 116

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

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

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

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

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

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

编辑:正如Logan所提到的,增量链接也与链接时间代码生成不兼容- 因此失去了可能的性能优化.

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

延迟加载的DLL可能是你在想的:

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

  • "在实践中,这可能不值得担心." 值得一提的是,虽然"正常"链接和增量链接之间的差异在运行时可能不是那么好的性能,但增量链接与链接时间代码生成不兼容,这会产生巨大的性能差异. (6认同)
  • @Russel:是的,会的.@Logan:谢谢,我已经更新了我的答案. (2认同)

Cav*_*ler 14

此外,非常重要的是,增量链接是一个先决条件Edit&Continue- 可以编辑代码并在运行时重新编译它,而无需重新启动.

所以在调试版本上有一个好东西,但不是发布版本.