Delphi链接包时会发生什么?

时间:2017-01-25 10:55:10

标签: delphi linker packages delphi-xe3 delphi-10.1-berlin

我一直致力于将一个巨大的项目分成小部分,为每个部分创建一个包(dpk),并将应用程序配置为"使用运行时包"。我在链接其中一个使用其他软件包的软件包时遇到问题。它只是花了太长时间才能链接。

我的印象是,当一个包(A)需要另一个包(B)时,该依赖关系只能在运行时解决,但显然不完全是这种情况,因为如果从&#34删除(B) ;要求" (A),(A)部分在正常时间内链接,但否则需要30分钟或更长时间。

所以我的问题是,当Delphi链接需要另一个包的包时会发生什么?

1 个答案:

答案 0 :(得分:3)

在链接包时,无论是运行时还是设计时,都需要解析链接对象中的所有依赖关系。与运行时包的唯一区别在于它们在运行时加载,因此它们最终可以减少可重用公共元素的可执行文件(或可执行文件套件)的大小。但是,链接行为保持不变,因此如果链接是构建中的瓶颈,那么如果从使用DCU切换到运行时包,这不会改变。

如果链接 是您应用程序中的瓶颈,那么您可以利用一些架构重构策略来简化构建,但这是一个超出此答案范围的广泛主题。