簡體   English   中英

Delphi:帶內置軟件包的.exe:600kb,.exe +外部BPL:6MB。這是為什么?

[英]Delphi: .exe with built-in packages: 600kb, .exe + external BPLs: 6MB. Why is that?

如果我使用內置包在delphi中編譯.exe文件,它會生成大約600kb的EXE文件。 但是,如果我使用運行時包編譯它,大小的總和(.exe +所有必需的.BPLs)大約是6-8 MB(取決於編譯器的版本)。 為什么差異如此顯着?

因為如果運行正常編譯,鏈接器可以在DCU上執行“智能鏈接”並刪除程序永遠不需要的代碼。 但是這些軟件包是預先構建的,並且包含了所有代碼,因此您無法將它們智能鏈接到更小的尺寸。

我認為你假設當你生成一個內置BPL的程序時,所有的BPL文件都被鏈接在一起。 事實並非如此。 在編譯的最后階段,Delphi編譯器將所有內容鏈接在一起。 它省略了模塊,這些模塊位於BPL中,但不是由程序直接或間接調用的。

因此,您最終會占用更小的空間,只有實際需要的模塊才會出現在最終的exe中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM