具體的DLL封裝對象請看劉藝的《Delphi中的DLL封裝和調用對象技術》及配書源碼。
本人在使用Delphi編制DLL過程中碰到了些奇怪的問題,現在將其列出來,僅供參考:
1、Delphi生成的DLL工程中寫到:ShareMem must be the first unit in your library's USES clause AND your project's。這裡提到的是DLL工程和使用該DLL的工程都需要引用ShareMem單元。
ShareMem單元最好加到工程裡面,因為在實際使用中發現,有時工程與DLL之間傳遞對象來使用,對象有STRING類型的屬性時,可能會出現奇怪的錯誤。
2、調用DLL函數定義問題:
當DLL中輸出:function ABC: IInterface;
而在程序中如下定義函數調用:
type
TFunc = function: IInterface; stdcall; //多了個stdcall
會出現奇怪的錯誤,應該定義成和DLL中定義的一樣:
type
TFunc = function: IInterface;
3、當使用到DLL中的接口,記得用完後必須在DLL中對象釋放前設置為NIL;
4、Delphi中調試DLL:經常碰到調試DLL時,加不了斷點的問題。看看DLL中的設置,編譯後DLL的輸出路徑和設置調用該DLL的主程序路徑設置是否一樣,並且都應該是絕對路徑;
5、《Delphi中的DLL封裝和調用對象技術》中提到,DLL 在封裝對象上主要的限制在於
?? 1、調用DLL 的應用程序只能使用DLL 中對象的動態綁定的方法
2、。。。
3、。。。
對於DLL使用主程序中對象的方法好象沒有這個限制,不知道為什麼?