易语言支持库开发手册forDelphi_第1页
易语言支持库开发手册forDelphi_第2页
易语言支持库开发手册forDelphi_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、易语言支持库开发手册 for Delphi 版本: 1.0 日期: 2008.5 作者:大连大有吴涛易语言软件开发有限公司综述 这是易语言支持库开发包( EDK, E Development Kit )开发 手册之 Delphi 版本。本文主要介绍如何用 Delphi 开发易语言支持库。基本说明 支持库是扩展易语言系统的主要方式之一,也是最有效的方 式之一。通过使用其它编程语言为易语言开发支持库,易语言系统的 功能可以得到无限扩展。通过支持库这一途径,易语言可以充分整合其它编程语言和操作系统的各种资源,为我所用。他山之石,可以攻玉。易语言支持库实际上是动态链接库(在 Windows 下为 DL

2、L 文件,在 Linux 下为 SO 文件)易语言支持库必须导出 GetNewInf 函数: functionGetNewInf() : pLIB_INFO; stdcall; export; 易语言支持库文件的后缀名通常是 .fne ,还可能是 .fnr 或 .fnl易语言中的文本、字节集、数组等数据都有其特定的二进制 格式,请参考 数据存储格式 开发易语言支持库之前,一定要仔细阅读本文档,和 EDK 中提供的 e.pas 头文件(其中有很多信息本文档没有涉及)易语言对支持库的要求很简单,只要导出 GetNewInf 函数 并返回填充完整的 LIB_INFO 结构体 (record) 的内存

3、首地址 即可。这看似简单的要求,实际操作起来却十分繁索,要知道,LIB_INFO 是一个非常复杂的结构体 (record) ,要完整的填充 它不是一件轻松的事情。在 Delphi 版本的易语言支持库开发包中,我们做了大量的 工作来简化这项操作,目的就是让 Delphi 开发易语言支持 库比 C/C+ 更容易。还有一点要说明, Delphi/VCL 并不能完全融合到易语言中, 在开发支持库时存在一定的局限性。配置开发环境 下载易语言支持库开发包 (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 中创建一个空白的 Win32 DLL 工程 (project) ,存 储为 myfne.dpr ,修改其代码如下:library myfne;usese, SysUtils, Classes;$R *.res$E fne / 指定编译出的文件名后缀为 fne /易语言支持

5、库要求的导出函数GetNewInf()function GetNewInf() : pLIB_INFO; stdcall; export; beginresult := GetLibInfo();end;/函数导出表 (exports)exportsGetNewInf;beginDefineLib(myfne, 5CAFDDB6-22E7-4B27-823A-A80A3919189F, /szName, szGuidDelphi 开发的一个简单的易语言支持库,主要用于演示。 /szExplain1, 0, 1, _GBK_LANG_VER, /nMajorVersion, nMinorVers

6、ion, nBuildNumber, nLanguage0, /dwState 大连大有吴涛易语言软件开发有限公司, , /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 )指定了编译后的动态链接库的后 缀名为 fne (而非普通的 dll )定义并导出 (exports) 了支持库规范所要求的 GetNewInf() 函数通过调用 DefineLib() 函数定义了支持库的基本信息 支持库名称(即 DefineLib() 的第

8、一个参数)和支持库的文 件名称没有关系,可分别任意取名(一般前者为中文后者为 英文)代码中用到的 GetLibInfo(), DefineLib() 等都是 e.pas 中 定义的函数 /过程(如果有兴趣, 不妨看看它们的内部实现代 码)begin 段中的代码将在支持库被加载时自动执行为了扩充这个空白的支持库,我们需要增加其它的代码。又为了保持代码的相对独立,我们把新增加的代码放在一个新 创建的 Unit1.pas 文件中:unit Unit1;interfaceuses e;implementationinitializationDefineConst( 常量一 , const1, 这个常量

9、一的说明,文本常 量, CT_TEXT, 0, 常量一的值 (文本 );DefineConst( 常量二 , const2, 这个常量二的说明,数值常 量 , CT_NUM, 1999, nil);DefineConst( 常量三 , const3, 这个常量三的说明,逻辑常 量 , CT_BOOL, 1, nil);end.以上代码,是我们在 Delphi 自动生成的代码骨架的基础上 添加修改而成。请注意以下几点:引用 (uses) 了 e.pas (或 e.dcu )文件在 initialization 段中调用了 DefineConst() ,定义了三个易 语言常量DefineConst() 是 e.pas 中定义的函数 / 过程initialization 段中的代码将在支持库加载时自动执行 再次编译支持库,其中将多出三个常量。注意:慎用 initialization 段,尤其是工程中存在多个 .pas 文件的情况。数据类型 这一节主要介绍易语言支持库中,数据类型的标识,和数据 类型的存储。数据类型标识 在易语言支持库中,使用特定的数值来标识各种数据类型。在定义命令的返回值类型、参数类型、成员类型等需要指定 数据类型的地方,均需指定相应的标识数值。以下是易语言基本数据类型与其标识数值对照表:基本类型 标识说明SDT_BYTESDT_* 等是 e.pas 中定义的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论