在易语言中调用LL使用说明.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在易语言中调用LL使用说明

易语言中调用DLL使用说明 2005年11月 大连大有吴涛易语言软件开发有限公司 基本说明 本文所描述的部分功能需易语言4.01或以上版本支持。 “在易语言中调用DLL”包含两方面的内容:调用Windows系统API函数;调用普通DLL函数。 下文用到的“调用API”或“调用DLL”等字眼,除非特别注明,一般都是指以上两方面之一或之和,视上下文而定。绝大多数情况下,无需明确区分调用的是系统API还是普通DLL。 目前易语言只支持以stdcall方式调用DLL中的导出函数。 Windows系统API一般都是以stdcall调用方式导出的,故在易语言中调用它们时通常不必考虑函数调用方式的问题。而普通DLL有可能导出“非stdcall调用方式”(比如cdecl)的函数,调用时需要特别注意。一般而言,考虑到通用性,DLL开发者都会选择导出以sdtcall方式调用的函数。(支持生成DLL的编程语言通常都支持导出stdcall调用方式的函数,具体实现请参考各编程语言手册。) 特别地,在VC中类似如下代码导出的函数并非stdcall调用方式: extern C __declspec dllexport test int a, int b return a + b ; 要想该函数被易语言调用,应该按类似如下方式定义(并在.def文本中声明导出): int WINAPI test int a, int b return a + b ; 易语言编译生成的DLL,其导出函数全部为stdcall调用方式,所以在易语言中调用易语言生成的DLL不存在问题。 目前在易语言中调用DLL时只支持1字节对齐的结构(自定义数据类型) 如果DLL命令的某个参数或参数的某个成员是结构类型(自定义数据类型),则其对齐方式必须是1字节对齐。Windows系统API中所用到的结构都是1字节对齐的,故在调用API时不受此限制。但如果想用其它编程语言生成DLL供易语言调用且数据类型中包含了1或2字节数据长度的成员(如字符型或短整数),就需要考虑结构的1字节对齐。 在VC中,可以这样定义1字节对齐的结构(结构在C/C++中称为struct): #pragma pack push, old_value // 保存VC++编译器结构对齐字节数。 #pragma pack 1 // 设置为以一字节对齐。 struct xxx byte a; int b; double c; ; #pragma pack pop, old_value // 恢复VC++编译器结构对齐字节数。 在Delphi中,可以这样定义1字节对齐的结构(结构在Delphi中称为record): type xxx packed record a: byte; b: integer; c: double; end; 在其它编程语言或编译器中的定义方式请参考各自的编程手册。 目前易语言支持调用任意复杂的DLL命令 只要满足了前面的两个条件——调用方式为stdcall,参数结构为1字节对齐——易语言支持调用任意复杂的DLL命令:参数除了可以是基本数据类型或普通结构类型外,还可以是基本类型地址或基本类型数组,也可以是结构类型地址或结构类型数组,结构类型的成员中还可以包含任意数量和任意层次的其它结构、结构地址、结构数组,等等。 DLL命令调用表 要在易语言中调用Windows API或普通DLL中的导出函数,必须首先在易语言中对该函数进行声明,声明的方式就是颇具易语言特色的“填写‘DLL命令调用表’”。“DLL命令调用表”正确填写完毕之后,就可以象调用普通易语言子程序一样调用DLL命令了。 在易语言中填写“DLL命令调用表”与在VB中声明DLL函数是同样的作用,具有等同的效果。只不过易语言把原本文本型的东西表格化了,更加直观,便于编辑修改。易语言中的表格与其它编程工具中的普通文本一样,可以被复制和粘贴。 下面重点说明“DLL命令调用表”的填写。 在易语言中,选择菜单“插入→DLL命令”即可插入一个空白的“DLL命令调用表”。当然还有其它操作方式,请参考易语言相关操作手册。 空白的“DLL命令调用表” 已填写的“DLL命令调用表” 要填写的项目 说明 Dll命令名 定义该DLL命令在易语言中的名称。必须填写,但具体什么名称并不重要,只要不与易语言中的其它子程序重名即可。 返回值类型 定义DLL命令的实际返回值类型所对应的易语言类型。 如果在易语言中调用该DLL函数时不需要用到其返回值,可以不填写——而不管实际的DLL函数有没有返回值。 易语言中的数据类型与生成该DLL的编程语言中的数据类型并不完全一致,需进行适当的转换,详见下文数据类型对照表。 公开 目前不被使用。

您可能关注的文档

文档评论(0)

qee026 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档