delphi 呼叫dll兩種方式

2021-06-19 05:50:46 字數 1012 閱讀 7059

<1>外部宣告   

在delphi中外部宣告是訪問外部例程最容易和最常用的方式,有兩種宣告方式:通過名字、通過索引號。舉例如下:在mydll.dll中有兩個函式和乙個過程,則其外部宣告可以寫成:   

function   test1:integer;external   'mydll';   

//直接通過名稱呼叫test1(注意名稱大小寫敏感)。     

function   test11:integer;external   'mydll'   name   'test1';   

//通過名稱呼叫test1,在程式中使用新名稱(原名稱仍然大小寫敏感)。     

procedure   test2;external   'mydll'   index   1;   

//通過索引號呼叫test2。程式中可以用與dll中不一樣的名稱.     

使用外部宣告的缺點是程式啟動時如果找不到mydll.dll將無法執行,即使沒有呼叫其中的模組。   動態載入的方法可以避免這種情況。   

<2>動態載入   

通過呼叫windows   api中的相關函式,將dll調入記憶體並獲得指向函式或過程的指標,執行完模組後釋放記憶體。除了節約記憶體外,這種方法的乙個很大的優點是能處理找不到dll或者在裝入過程中出錯的情況。這樣即使某個dll有問題,應用程式的其他部分仍然能夠正常執行。動態載入的例子如下:   

var   hdll:thandle;   

test1:function:integer;   

begin   

hdll:=loadlibrary('mydll.dll');   

if   hdll<32   then   exit;//如果dll無法載入則跳出   

@test1:=getprocaddress(hdll,makeintresource(1));   

//取得mydll中的第乙個函式的位址。   

...   

freelibrary(hdll);   

end;     

dll的兩種呼叫方式,lib與dll區別

1 lib是編譯時需要的,dll是執行時需要的。如果要完成源 的編譯,有lib就夠了。如果也使動態連線的程式執行起來,有dll就夠了。在開發和除錯階段,當然最好都有。2 一般的動態庫程式有lib檔案和dll檔案。lib檔案是必須在編譯期就連線到應用程式中的,而dll檔案是執行期才會被呼叫的。如果有d...

delphi殺程序的兩種方式

第一種 比較簡單,根據標題,找到視窗,再找到程序,殺死程序 procedure killprogram windowtitle string const process terminate 0001 var processhandle thandle processid integer thewin...

Dll匯出函式的兩種方式

dll中匯出函式的宣告有兩種方式 一種方式是 在函式宣告中加上 declspec dllexport 另外一種方式是 採用模組定義 def 檔案宣告,def 檔案為鏈結器提供了有關被鏈結程式的匯出 屬性及其他方面的資訊。方式一 在函式宣告中加上 declspec dllexport 在動態鏈結庫程式...