溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Delphi中怎么調用動態(tài)鏈接庫

發(fā)布時間:2021-06-24 16:00:05 來源:億速云 閱讀:430 作者:Leah 欄目:大數(shù)據(jù)

Delphi中怎么調用動態(tài)鏈接庫,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。


調用動態(tài)庫的兩種方法

  • 靜態(tài)調用

    這種用法的前提是在編譯之前已經(jīng)明確知道要調用DLL中的哪幾個函數(shù),編譯時在目標文件中只保留必要的鏈接信息,而不含DLL函數(shù)的代碼;當程序執(zhí)行時,利用鏈接信息加載DLL函數(shù)代碼并在內存中將其鏈接入調用程序的執(zhí)行空間中,其主要目的是便于代碼共享。

  • 動態(tài)調用

    這種方式是指在編譯之前并不知道將會調用哪些DLL函數(shù),完全是在運行過程中根據(jù)需要決定應調用哪個函數(shù),并用LoadLibrary和GetProcAddress動態(tài)獲得DLL函數(shù)的入口地址。

代碼演示

我們先創(chuàng)建一個動態(tài)鏈接庫名稱為PosPayIntf,最近幾章介紹Delphi技術的都是用這個動態(tài)庫,因為正好因為項目要做一個對接第三方微信支付寶的動態(tài)庫。Delphi中怎么調用動態(tài)鏈接庫入口函數(shù)為PosPayOperate

function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; export; stdcall;

    Delphi中怎么調用動態(tài)鏈接庫

    Delphi中怎么調用動態(tài)鏈接庫

    然后我們新建一個Application,加入兩個Memo,一個combox和一個Button按鈕

    Delphi中怎么調用動態(tài)鏈接庫

    靜態(tài)調用

    在uses下面加入

    const
      SMCzkYw_DLL = 'PosPayIntf.dll';           //調用動態(tài)庫名稱
      function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; export; stdcall;

    Delphi中怎么調用動態(tài)鏈接庫

    然后在implementation下面加入

      function PosPayOperate(OpType: Integer; const InPara: PChar; OutPara, OutMsg: PChar): Integer; external POSPAY_DLL;

    Delphi中怎么調用動態(tài)鏈接庫

    這樣我們在調用的時候就直接可以使用

    Delphi中怎么調用動態(tài)鏈接庫

    用靜態(tài)調用動態(tài)庫相對來說代碼比較少,但是我們的動態(tài)庫必須要放到和這個EXE的程序下,如果DLL文件沒有存在,程序則無法運行,提示你少DLL文件。


    動態(tài)調用

    今天我們主要說的還是動態(tài)調用,因為用動態(tài)調用的方法如果DLL不存在,或是入口函數(shù)有問題,我們都可以通過try except進行捕獲,也不會影響主程序的使用。

    我們在調用動態(tài)庫方法的按鈕事件里面直接定義一個THandle和一個TPublicFun,TPublicFun撒向的就是我們的入口函數(shù)

    Delphi中怎么調用動態(tài)鏈接庫

    然后通過LoadLibrary來加載動態(tài)庫

    Delphi中怎么調用動態(tài)鏈接庫

    調用的方式和靜態(tài)調用一樣

    Delphi中怎么調用動態(tài)鏈接庫

    最后用try finally來釋放一下動態(tài)庫

    Delphi中怎么調用動態(tài)鏈接庫

    看完上述內容,你們掌握Delphi中怎么調用動態(tài)鏈接庫的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

    AI