Delphi:带内置软件包的.exe:600kb,.exe +外部BPL:6MB。这是为什么?

时间:2009-08-21 14:02:07

标签: delphi exe bpl

如果我使用内置包在delphi中编译.exe文件,它会生成大约600kb的EXE文件。但是,如果我使用运行时包编译它,大小的总和(.exe +所有必需的.BPLs)大约是6-8 MB(取决于编译器的版本)。为什么差异如此显着?

2 个答案:

答案 0 :(得分:14)

因为如果运行正常编译,链接器可以在DCU上执行“智能链接”并删除程序永远不需要的代码。但是这些软件包是预先构建的,并且包含了所有代码,因此您无法将它们智能链接到更小的尺寸。

答案 1 :(得分:4)

我认为您假设在生成具有内置BPL的程序时链接了整个BPL文件。事实并非如此。在编译的最后阶段,Delphi编译器将所有内容链接在一起。它省略了BPL中的模块,但不是由程序直接或间接调用的。

因此,你最终会占用更少的空间,只有实际需要的模块才会出现在最终的exe中。