Inno Setup入門(二十九)——使用dll(3)

來源:互聯網
上載者:User
概述前面分兩節介紹了如何使用dll,這裡將對調用外部或者系統dll做一些綜述。Pascal指令碼能調用外部dll(標準Win32 API或者各程式員編寫的dll)中的函數,在調用外部dll中的函數前,需要聲明所調用的函數原型,使用external聲明dll檔案,對於一個Pascal描述的函數原型,例如function A(B: Integer): Integer;可以有三種方式調用:方法一:function A(B: Integer): Integer;external '<  dll中函數名稱>  >@<  dll檔案路徑  >';方法二:function A(B: Integer): Integer;external '<  dll中函數名稱>  >@<  dll檔案路徑  > <呼叫慣例>';方法三:function A(B: Integer): Integer;external '<dll中函數名稱>@<dll檔案路徑> <呼叫慣例> <選項>';第一種方法最簡單,這是Pascal指令碼的預設調用方法,呼叫慣例為stdcall,絕大部分的調用都是採用這種方式,當然也可以使用其他的呼叫慣例:cdecl、pascal和register最後一個選項指定了載入dll的方式,可以是下列幾種:delayload通常,Pascal指令碼會在開始的時候檢驗dll函數是否能夠被調用,如果不能,則拒絕執行。為了避免這種現象,可以用該選項指定消極式載入,通常是當你不確定所調用的函數是否在運行時可用,但是這樣做的後果就是,Pascal指令碼會在停用情況下繼續執行但是拋出異常。loadwithalteredsearchpath指明dll存放的檔案夾,讓載入器在這些檔案夾下去搜尋依賴的dll檔案,需要使用標誌LOAD_WITH_ALTERED_SEARCH_PATHsetuponly指明該dll檔案僅在指令碼運行處於安裝時載入。uninstallonly指明該dll檔案僅在指令碼運行處於卸載裝時載入。

 

 

轉自:http://www.360doc.com/content/13/0327/14/4221543_274236616.shtml

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.