對使用Delphi製作DLL復用檔案的建議

2021-03-31 08:56:58 字數 1239 閱讀 5943

對使用delphi製作dll復用檔案的建議

在公司裡有一些需要製作dll的場合,因為熟悉、方便和簡易,大多數使用delphi來製作。現在就這個主題提出一些個人建議。

盡量使用標準dll介面。指的是傳遞的引數型別及函式返回型別不能是delphi特有的,比如string(ansistring),以及動態陣列和含有這些型別成員的復合型別(如記錄),也不能是包含有這些型別成員資料成員的物件型別,以避免可能的錯誤。如果使用了string型別或動態陣列型別,且呼叫方不是delphi程式,則基本上會報錯。如果呼叫方是delphi但呼叫方或被呼叫方沒有在工程檔案的第一包含單元不是sharemem,也可能會出錯。

如果呼叫方是delphi應用程式,則可能可以使用不包含禁止型別(string, 動態陣列)資料成員的物件作為引數或返回值,但也應盡量避免。

如果呼叫方與被呼叫方都是delphi程式,而且要使用string或動態陣列作引數,則雙方工程檔案的第一包含單元必須是sharemem。(c++builder程式的情況可能與此相同,不過沒有測試過。)

如果呼叫方不是delphi程式,則string、動態陣列、包含string或動態陣列的復合資料型別及類例項,都不能作為引數及返回值。

因此,為了提高dll的復用範圍,避免可能存在的錯誤,應當使用標準win32 api標準引數型別,以前使用string的變數,可以使用pchar(s)轉換。動態陣列則轉換為指標型別(@array[0]),並加上陣列的長度。

如果因為呼叫方與被呼叫方都是delphi程式,為了編寫方便,不想進行上述轉換,則推薦使用執行時包的形式。執行時包可以保證動態分配資料的正確釋放。這樣因為其副檔名(.bpl),顯出該檔案僅限於delphi/c++builder使用(不象dll)。

其次,盡量避免使用overload的函式/過程作輸出,如果同一操作有多個方式,則可以讓函式/過程名有少許差別,類似於delphi中的format***x、create***x等函式及方法,如createbydefaultfile, createdefault。

最後,作為dll的提供者,應當提供直接程式設計的介面檔案,如delphi中的.pas或.dcu(最好是.pas,因為可以有注釋)、c及c++中的.h和.lib。而不是讓使用者們自己建立。如果非要有overload的函式/過程,這一點顯得特別重要。另外,作為delphi應用,提供的.pas檔案可以是提前連線的(使用external指定dll中的輸出函式),也可以是後期連線的(使用loadlibrary、getprocaddress),dll提供者提供程式設計介面檔案,既顯得正式(或hiqos),又有保障。

用Delphi製作DLL的方法

用delphi製作dll的方法 一 dll的製作一般步驟 二 引數傳遞 三 dll的初始化和退出清理 如果需要初始化和退出清理 四 全域性變數的使用 五 呼叫靜態載入 六 呼叫動態載入 七 在dll建立乙個tform 八 在dll中建立乙個 ichildform 九 示例 十 delphi製作的dl...

用Delphi製作DLL的方法

用delphi製作dll的方法 一 dll的製作一般步驟 二 引數傳遞 三 dll的初始化和退出清理 如果需要初始化和退出清理 四 全域性變數的使用 五 呼叫靜態載入 六 呼叫動態載入 七 在dll建立乙個tform 八 在dll中建立乙個 ichildform 九 示例 十 delphi製作的dl...

Delphi 製作 dll 動態鏈結庫

delphi 製作 dll 動態鏈結庫,封裝常用的函式。1,建立 dll 檔案 建立工程 檔案 mydll.dpr library mydll uses sysutils,classes,graphics,controls,forms,dialogs,stdctrls procedure mymsg...