易語言支持庫開發(fā)手冊forDelphi_第1頁
易語言支持庫開發(fā)手冊forDelphi_第2頁
易語言支持庫開發(fā)手冊forDelphi_第3頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、易語言支持庫開發(fā)手冊 for Delphi 版本: 1.0 日期: 2008.5 作者:大連大有吳濤易語言軟件開發(fā)有限公司綜述 這是易語言支持庫開發(fā)包( EDK, E Development Kit )開發(fā) 手冊之 Delphi 版本。本文主要介紹如何用 Delphi 開發(fā)易語言支持庫?;菊f明 支持庫是擴展易語言系統(tǒng)的主要方式之一,也是最有效的方 式之一。通過使用其它編程語言為易語言開發(fā)支持庫,易語言系統(tǒng)的 功能可以得到無限擴展。通過支持庫這一途徑,易語言可以充分整合其它編程語言和操作系統(tǒng)的各種資源,為我所用。他山之石,可以攻玉。易語言支持庫實際上是動態(tài)鏈接庫(在 Windows 下為 DL

2、L 文件,在 Linux 下為 SO 文件)易語言支持庫必須導出 GetNewInf 函數(shù): functionGetNewInf() : pLIB_INFO; stdcall; export; 易語言支持庫文件的后綴名通常是 .fne ,還可能是 .fnr 或 .fnl易語言中的文本、字節(jié)集、數(shù)組等數(shù)據(jù)都有其特定的二進制 格式,請參考 數(shù)據(jù)存儲格式 開發(fā)易語言支持庫之前,一定要仔細閱讀本文檔,和 EDK 中提供的 e.pas 頭文件(其中有很多信息本文檔沒有涉及)易語言對支持庫的要求很簡單,只要導出 GetNewInf 函數(shù) 并返回填充完整的 LIB_INFO 結構體 (record) 的內存

3、首地址 即可。這看似簡單的要求,實際操作起來卻十分繁索,要知道,LIB_INFO 是一個非常復雜的結構體 (record) ,要完整的填充 它不是一件輕松的事情。在 Delphi 版本的易語言支持庫開發(fā)包中,我們做了大量的 工作來簡化這項操作,目的就是讓 Delphi 開發(fā)易語言支持 庫比 C/C+ 更容易。還有一點要說明, Delphi/VCL 并不能完全融合到易語言中, 在開發(fā)支持庫時存在一定的局限性。配置開發(fā)環(huán)境 下載易語言支持庫開發(fā)包 (EDK) ,解壓縮到任意目錄(如 c:edk )。安裝 Delphi (5/6/7/8/2005/2006/2007/2008) 。本文以 Delph

4、i7 為主。配置 Delphi ,指定庫搜索路徑。請選擇 Delphi 主菜單, Tools -> EnvironmentOptions. ,在 Library 子項內的 Library Path 中增加 e.pas 所在路徑(如 c:edk )。 以上操作為一次性操作,以后不需要重復進行。第一個支持庫在 Delphi 中創(chuàng)建一個空白的 Win32 DLL 工程 (project) ,存 儲為 myfne.dpr ,修改其代碼如下:library myfne;usese, SysUtils, Classes;$R *.res$E fne / 指定編譯出的文件名后綴為 fne /易語言支持

5、庫要求的導出函數(shù)GetNewInf()function GetNewInf() : pLIB_INFO; stdcall; export; beginresult := GetLibInfo();end;/函數(shù)導出表 (exports)exportsGetNewInf;beginDefineLib(myfne, 5CAFDDB6-22E7-4B27-823A-A80A3919189F, /szName, szGuidDelphi 開發(fā)的一個簡單的易語言支持庫,主要用于演示。 /szExplain1, 0, 1, _GBK_LANG_VER, /nMajorVersion, nMinorVers

6、ion, nBuildNumber, nLanguage0, /dwState 大連大有吳濤易語言軟件開發(fā)有限公司, , /szAuthor,szHomePage,szOther2, 0000 分類 1#00000 分類 2#0, /nCategoryCount, szzCategorynil, nil, /pfnRunAddInFn, szzAddInFnInfonil, /pfnNotifyLib (can be nil, default toDefaultProcessNotifyLib)nil, /szzDependFilesnil, /pfnFreeLibData);end.將以上代

7、碼編譯之后,即得到一個合法的空白的易語言支持 庫 myfne.fne ,此支持庫還沒有任何功能,但可被易語言正 常加載。請參考:測試和調試。以上代碼,是我們在 Delphi 自動生成的代碼骨架的基礎上 添加修改而成。請注意以下幾點:引用 (uses) 了易語言官方提供的 e.pas (或 e.dcu )文件 通過編譯指令( $E fne )指定了編譯后的動態(tài)鏈接庫的后 綴名為 fne (而非普通的 dll )定義并導出 (exports) 了支持庫規(guī)范所要求的 GetNewInf() 函數(shù)通過調用 DefineLib() 函數(shù)定義了支持庫的基本信息 支持庫名稱(即 DefineLib() 的第

8、一個參數(shù))和支持庫的文 件名稱沒有關系,可分別任意取名(一般前者為中文后者為 英文)代碼中用到的 GetLibInfo(), DefineLib() 等都是 e.pas 中 定義的函數(shù) /過程(如果有興趣, 不妨看看它們的內部實現(xiàn)代 碼)begin 段中的代碼將在支持庫被加載時自動執(zhí)行為了擴充這個空白的支持庫,我們需要增加其它的代碼。又為了保持代碼的相對獨立,我們把新增加的代碼放在一個新 創(chuàng)建的 Unit1.pas 文件中:unit Unit1;interfaceuses e;implementationinitializationDefineConst( 常量一 , const1, 這個常量

9、一的說明,文本常 量, CT_TEXT, 0, 常量一的值 (文本 );DefineConst( 常量二 , const2, 這個常量二的說明,數(shù)值常 量 , CT_NUM, 1999, nil);DefineConst( 常量三 , const3, 這個常量三的說明,邏輯常 量 , CT_BOOL, 1, nil);end.以上代碼,是我們在 Delphi 自動生成的代碼骨架的基礎上 添加修改而成。請注意以下幾點:引用 (uses) 了 e.pas (或 e.dcu )文件在 initialization 段中調用了 DefineConst() ,定義了三個易 語言常量DefineConst() 是 e.pas 中定義的函數(shù) / 過程initialization 段中的代碼將在支持庫加載時自動執(zhí)行 再次編譯支持庫,其中將多出三個常量。注意:慎用 initialization 段,尤其是工程中存在多個 .pas 文件的情況。數(shù)據(jù)類型 這一節(jié)主要介紹易語言支持庫中,數(shù)據(jù)類型的標識,和數(shù)據(jù) 類型的存儲。數(shù)據(jù)類型標識 在易語言支持庫中,使用特定的數(shù)值來標識各種數(shù)據(jù)類型。在定義命令的返回值類型、參數(shù)類型、成員類型等需要指定 數(shù)據(jù)類型的地方,均需指定相應的標識數(shù)值。以下是易語言基本數(shù)據(jù)類型與其標識數(shù)值對照表:基本類型 標識說明SDT_BYTESDT_* 等是 e.pas 中定義的

溫馨提示

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

評論

0/150

提交評論