程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> dll的創建與調用

dll的創建與調用

編輯:Delphi

 

tiDLL參數調用約定

——————————————————————

令      傳遞順序        參數刪除

stdcall     從左到右        函數方面

cdecl       從右到左        調用方面

pascal      從左到右        函數方面

register    從左到右        函數方面

━━━━━━━━━━━━━━━━━━━━━━

退出過程編譯時必須關閉stack_checking,因而需設置編譯指示 {$S-} 。 

━━━━━━━━━━━━━━━━━━━━━

//——————————dll的創建

brary mydll

{$S-}

//————————uses單元

uses

  classes,stdsys, form in form.pas{form};

//—————————變量聲明

var

  love:string;

  baby:integer;

  SaveExit: Pointer; 

//—————————函數和過程

procedure myinnerproc();stdcall;         //內部使用過程

begin

 {添入代碼}

end;

procedure myproc(var love:string);stdcall;export; //輸出可以調用過程

begin

 {添入代碼}

end;

function  myfunction(baby:integer):integer;stdcall;export;//可調用函數

begin

 {添入代碼}

end;

procedure LibExit; far;

begin

  if ExitCode = wep_System_Exit then

    begin

     { 系統關閉時的相應處理 }

    end

  else

    begin

    { DLL卸出時的相應處理 }

    end;

  ExitProc := SaveExit; { 恢復原來的退出過程指針 }

end; 

//——————————輸出說明

exports

 myproc name myproc index 1,

 myfunction name myfuntion index 2 risdent;//輸出信息始終保持在內存中{risdent}

//——————————初始化工作

begin

{DLL的初始化工作 }

 SaveExit := ExitProc; { 保存原來的退出過程指針 }

 ExitProc := @LibExit; { 安裝新的退出過程 }

End.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

表10.1 ExitCode的取值與意義 :取 值 意 義

—————————————————————

WEP_System_Exit                 Windows關閉 

WEP_Free_DLLx                   DLLs被卸出

━━━━━━━━━━━━━━━━━━━━━ 

//--------------調用dll

1。靜態調用

  在靜態調用一個DLLs中的過程或函數時,external指示增加到過程或函數的聲明語句中。

被調用的過程或函數必須采用遠調用模式。這可以使用far過程指示或一個{$F +}編譯指示。

Delphi全部支持傳統Windows動態鏈接庫編程中的三種調用方式,它們是:

  ● 通過過程/函數名

  ● 通過過程/函數的別名

  ● 通過過程/函數的順序號 

//————————————————————靜態調用舉例

unit windows

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved