2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、易語言中調(diào)用DLL使用說明基本說明基本說明本文所描述的部分功能需易語言4.01或以上版本支持?!霸谝渍Z言中調(diào)用在易語言中調(diào)用DLL”包含兩方面的內(nèi)容:調(diào)用包含兩方面的內(nèi)容:調(diào)用Windows系統(tǒng)系統(tǒng)API函數(shù);調(diào)用普通函數(shù);調(diào)用普通DLL函數(shù)。函數(shù)。下文用到的“調(diào)用API”或“調(diào)用DLL”等字眼,除非特別注明,一般都是指以上兩方面之一或之和,視上下文而定。絕大多數(shù)情況下,無需明確區(qū)分調(diào)用的是系統(tǒng)API還是普通DLL。目前易語言只支持以目

2、前易語言只支持以stdcall方式調(diào)用方式調(diào)用DLL中的導(dǎo)出函數(shù)。中的導(dǎo)出函數(shù)。Windows系統(tǒng)API一般都是以stdcall調(diào)用方式導(dǎo)出的,故在易語言中調(diào)用它們時(shí)通常不必考慮函數(shù)調(diào)用方式的問題。而普通DLL有可能導(dǎo)出“非stdcall調(diào)用方式”(比如cdecl)的函數(shù),調(diào)用時(shí)需要特別注意。一般而言,考慮到通用性,DLL開發(fā)者都會選擇導(dǎo)出以sdtcall方式調(diào)用的函數(shù)。(支持生成DLL的編程語言通常都支持導(dǎo)出stdcall調(diào)用方式的函

3、數(shù),具體實(shí)現(xiàn)請參考各編程語言手冊。)特別地,在VC中類似如下代碼導(dǎo)出的函數(shù)并非stdcall調(diào)用方式:extern“C“__declspec(dllexpt)test(intaintb)return(ab)要想該函數(shù)被易語言調(diào)用,應(yīng)該按類似如下方式定義(并在.def文本中聲明導(dǎo)出):intWINAPItest(intaintb)return(ab)易語言編譯生成的DLL,其導(dǎo)出函數(shù)全部為stdcall調(diào)用方式,所以在易語言中調(diào)用易語言生

4、成的DLL不存在問題。目前在易語言中調(diào)用目前在易語言中調(diào)用DLL時(shí)只支持時(shí)只支持1字節(jié)對齊的結(jié)構(gòu)(自定義數(shù)據(jù)類型)字節(jié)對齊的結(jié)構(gòu)(自定義數(shù)據(jù)類型)如果DLL命令的某個(gè)參數(shù)或參數(shù)的某個(gè)成員是結(jié)構(gòu)類型(自定義數(shù)據(jù)類型),則其對齊方式必須是1字節(jié)對齊。Windows系統(tǒng)API中所用到的結(jié)構(gòu)都是1字節(jié)對齊的,故在調(diào)用API時(shí)不受此限制。但如果想用其它編程語言生成DLL供易語言調(diào)用且數(shù)據(jù)類型中包含了1或2字節(jié)數(shù)據(jù)長度的成員(如字符型或短整數(shù)),就

5、需要考慮結(jié)構(gòu)的1字節(jié)對齊。在VC中,可以這樣定義1字節(jié)對齊的結(jié)構(gòu)(結(jié)構(gòu)在CC中稱為struct):#pragmapack(pushold_value)保存VC編譯器結(jié)構(gòu)對齊字節(jié)數(shù)。#pragmapack(1)設(shè)置為以一字節(jié)對齊。structxxx要填寫的項(xiàng)目要填寫的項(xiàng)目說明說明Dll命令名命令名定義該DLL命令在易語言中的名稱。必須填寫,但具體什么名稱并不重要,只要不與易語言中的其它子程序重名即可。返回值類型定義DLL命令的實(shí)際返回值類

6、型所對應(yīng)的易語言類型。如果在易語言中調(diào)用該DLL函數(shù)時(shí)不需要用到其返回值,可以不填寫——而不管實(shí)際的DLL函數(shù)有沒有返回值。易語言中的數(shù)據(jù)類型與生成該DLL的編程語言中的數(shù)據(jù)類型并不完全一致,需進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換,詳見下文數(shù)據(jù)類型對照表。公開目前不被使用。(Dll命令)備注對該DLL的注釋,可以不填。Dll庫文件名庫文件名指定被調(diào)用的DLL文件名稱。文件名中的英文字母不區(qū)分大小寫,可以省略后綴“.dll”。如果是Windows系統(tǒng)DLL的話

7、,可以省略不填??梢允褂媒^對路徑或相對路徑,使用相對路徑時(shí)路徑相對于當(dāng)前“.e”文件(調(diào)試運(yùn)行時(shí))或當(dāng)前“.exe”文件(編譯后運(yùn)行時(shí))??紤]到通用性,不建議在此處指定路徑,可在代碼中以“置DLL裝載目錄()”動態(tài)指定被調(diào)用DLL的路徑。在Dll庫中對應(yīng)命令名庫中對應(yīng)命令名指定被調(diào)用的DLL命令(或函數(shù))名稱。必須準(zhǔn)確填寫。名稱中的英文字母不區(qū)分大小寫。注意:某些帶文本參數(shù)的API,其函數(shù)名稱通常以“A”或“W”結(jié)尾。如FindWind

8、ow函數(shù),其實(shí)user32.dll中只有FindWindowA和FindWindowW,并沒有FindWindow,所以我們在這里要填FindWindowA和FindWindowW而不是FindWindow。參數(shù)名定義該DLL命令在易語言中的名稱。必須填寫,但具體什么名稱并不重要。(Dll參數(shù))類型參數(shù))類型定義該參數(shù)的實(shí)際類型所對應(yīng)的易語言類型。可以為易語言自定義數(shù)據(jù)類型(該數(shù)據(jù)類型的成員必須與DLL所需數(shù)據(jù)類型的成員一一對應(yīng))。易語

9、言中的數(shù)據(jù)類型與生成該DLL的編程語言中的數(shù)據(jù)類型并不完全一致,需進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換,詳見下文數(shù)據(jù)類型對照表。傳址傳址如果選中本標(biāo)志,表示將傳遞參數(shù)的內(nèi)存首地址(類似CC中的傳指針參數(shù)或VB中的ByRef參數(shù)或Delphi中的var參數(shù));如果不選中本標(biāo)志,表示傳遞參數(shù)實(shí)際數(shù)據(jù)。應(yīng)根據(jù)該DLL的參數(shù)聲明或參數(shù)說明來決定是否使用“傳址”,詳見示例。此外,如果參數(shù)為文本型、字節(jié)集型,或者為數(shù)組數(shù)據(jù),則總是傳址(而不管此處是否定義為傳址)。數(shù)組數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論