如果我用内置包在delphi中编译.exe文件,它会生成大约600kb的EXE文件。但是,如果我使用运行时包编译它,大小的总和(.exe + 所有必需的 .BPL)约为 6-8 MB(取决于编译器的版本)。为什么差异如此显着?
问问题
531 次
2 回答
14
因为如果您运行正常编译,链接器可以在 DCU 上执行“智能链接”并删除您的程序永远不需要的代码。但是这些包是预先构建的并且包含了所有代码,所以你不能将它们智能链接到更小的尺寸。
于 2009-08-21T14:05:21.833 回答
4
我认为您假设在生成具有内置 BPL 的程序时链接了整个 BPL 文件。事实并非如此。在编译的最后阶段,Delphi 编译器将所有内容链接在一起。它省略了 BPL 中的模块,但您的程序不会直接或间接调用这些模块。
因此,您最终得到的占用空间要小得多,只有实际需要的模块在最终的 exe 中。
于 2009-08-21T14:18:34.830 回答