Delphi中的包(三) bpl和dll

2021-04-01 18:46:27 字數 1144 閱讀 8559

------摘 自:http://blog.csdn.net/soobey/archive/2005/08/30/468017.aspx

曾經聽說過「bpl就是一種特殊的dll」,但是沒有想到這句話具有這麼大的意義。最近看到有人在屬於某個dpk的unit裡面寫export語句,覺得非常驚奇。但是遍查delphi的help,與export相關的都是library。今天看了《delphi源**分析》,才知道上面這句話的含義。因此有下面的推論:

對dll工程來說,exports既可以寫在工程檔案裡面,也可以寫在unit裡面,沒什麼區別。

bpl是一種dll。

上面的exports很正常。

其實按《delphi源**分析》裡面的說法,bpl只是在dll的基礎上新增了一些特性,比如檢查重複unit之類。作業系統認為bpl和dll是同一型別的檔案。而且書裡面給出了對乙個最簡單bpl的tdump結果:

package nullpackage;

requires

rtl;

end.

e:/ls>tdump -m -ea:v nullpackage.bpl

exports from nullpackage.bpl

7 exported name(s), 7 export addresse(s). ordinal base is 1.

sorted by rva:

rva      ord. hint name

-------- ---- ---- ----

0000124c    1 0006 @getpackageinfotable

0000124c    2 0003 @nullpackage@@getpackageinfotable$qqrv

00001254    3 0002 @nullpackage@@packageload$qqrv

00001254    7 0005 initialize

00001260    4 0001 @nullpackage@@packageunload$qqrv

00001260    6 0004 finalize

0000126c    5 0000 @nullpackage@initialization$qqrv

看到有好幾個函式指向同乙個位址了嗎?這個大約就是exports的意思了。

Delphi中的包(二) 關於bpl

摘自 http blog.csdn.net soobey archive 2005 08 29 467732.aspx 現在我們不得不寫自己的dpk工程,以更改地檢測我們的猜想。我們首先建立乙個project group,包含三個工程 program projectexe uses forms,wi...

Delphi中BPL包的使用,個人經驗

用包可以分模組編寫功能,方便開發階段的組織,同時也便於後期的公升級維護,使公升級的粒度越來越少 也是用了c 的類庫之後的感悟 下面寫幾點經驗 一 不要用delphi本身的bpl,把delphi自身的包中的單元取出來,合併成乙個bpl。二 不要直接用三方控制項的安裝包,也要自己建乙個包,把單元檔案中加...

bpl 包的編寫和引用

答案很簡單 因為包的功能強大。設計期包 design time package 簡化了自定義元件的發布和安裝 而執行期包 run time package 則更是給傳統的程式設計注入了新鮮的力量。一旦把可重用的 編譯為執行期庫中,你就可以在多個應用程式中共享它們。所有應用程式都可以通過包訪問標準元件...