易语言中调用dll使用说明

易语言中调用dll使用说明

ID:14381267

大小:174.00 KB

页数:9页

时间:2018-07-28

易语言中调用dll使用说明_第1页
易语言中调用dll使用说明_第2页
易语言中调用dll使用说明_第3页
易语言中调用dll使用说明_第4页
易语言中调用dll使用说明_第5页
资源描述:

《易语言中调用dll使用说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、易语言中调用DLL使用说明基本说明本文所描述的部分功能需易语言4.01或以上版本支持。“在易语言中调用DLL”包含两方面的内容:调用Windows系统API函数;调用普通DLL函数。下文用到的“调用API”或“调用DLL”等字眼,除非特别注明,一般都是指以上两方面之一或之和,视上下文而定。绝大多数情况下,无需明确区分调用的是系统API还是普通DLL。目前易语言只支持以stdcall方式调用DLL中的导出函数。Windows系统API一般都是以stdcall调用方式导出的,故在易语言中调用它们时通常不必考虑函数调用方式的问题。而普通D

2、LL有可能导出“非stdcall调用方式”(比如cdecl)的函数,调用时需要特别注意。一般而言,考虑到通用性,DLL开发者都会选择导出以sdtcall方式调用的函数。(支持生成DLL的编程语言通常都支持导出stdcall调用方式的函数,具体实现请参考各编程语言手册。)特别地,在VC中类似如下代码导出的函数并非stdcall调用方式:extern"C"__declspec(dllexport)test(inta,intb){return(a+b);}要想该函数被易语言调用,应该按类似如下方式定义(并在.def文本中声明导出):int

3、WINAPItest(inta,intb){return(a+b);}易语言编译生成的DLL,其导出函数全部为stdcall调用方式,所以在易语言中调用易语言生成的DLL不存在问题。目前在易语言中调用DLL时只支持1字节对齐的结构(自定义数据类型)如果DLL命令的某个参数或参数的某个成员是结构类型(自定义数据类型),则其对齐方式必须是1字节对齐。Windows系统API中所用到的结构都是1字节对齐的,故在调用API时不受此限制。但如果想用其它编程语言生成DLL供易语言调用且数据类型中包含了1或2字节数据长度的成员(如字符型或短整数)

4、,就需要考虑结构的1字节对齐。在VC中,可以这样定义1字节对齐的结构(结构在C/C++中称为struct):#pragmapack(push,old_value)//保存VC++编译器结构对齐字节数。#pragmapack(1)//设置为以一字节对齐。structxxx{bytea;intb;doublec;};#pragmapack(pop,old_value)//恢复VC++编译器结构对齐字节数。在Delphi中,可以这样定义1字节对齐的结构(结构在Delphi中称为record):typexxx=packedrecorda:b

5、yte;b:integer;c:double;end;在其它编程语言或编译器中的定义方式请参考各自的编程手册。目前易语言支持调用任意复杂的DLL命令只要满足了前面的两个条件——调用方式为stdcall,参数结构为1字节对齐——易语言支持调用任意复杂的DLL命令:参数除了可以是基本数据类型或普通结构类型外,还可以是基本类型地址或基本类型数组,也可以是结构类型地址或结构类型数组,结构类型的成员中还可以包含任意数量和任意层次的其它结构、结构地址、结构数组,等等。DLL命令调用表要在易语言中调用WindowsAPI或普通DLL中的导出函数,

6、必须首先在易语言中对该函数进行声明,声明的方式就是颇具易语言特色的“填写‘DLL命令调用表’”。“DLL命令调用表”正确填写完毕之后,就可以象调用普通易语言子程序一样调用DLL命令了。在易语言中填写“DLL命令调用表”与在VB中声明DLL函数是同样的作用,具有等同的效果。只不过易语言把原本文本型的东西表格化了,更加直观,便于编辑修改。易语言中的表格与其它编程工具中的普通文本一样,可以被复制和粘贴。下面重点说明“DLL命令调用表”的填写。在易语言中,选择菜单“插入→DLL命令”即可插入一个空白的“DLL命令调用表”。当然还有其它操作方

7、式,请参考易语言相关操作手册。空白的“DLL命令调用表”已填写的“DLL命令调用表”要填写的项目说明Dll命令名定义该DLL命令在易语言中的名称。必须填写,但具体什么名称并不重要,只要不与易语言中的其它子程序重名即可。返回值类型定义DLL命令的实际返回值类型所对应的易语言类型。如果在易语言中调用该DLL函数时不需要用到其返回值,可以不填写——而不管实际的DLL函数有没有返回值。易语言中的数据类型与生成该DLL的编程语言中的数据类型并不完全一致,需进行适当的转换,详见下文数据类型对照表。公开目前不被使用。(Dll命令)备注对该DLL的

8、注释,可以不填。Dll库文件名指定被调用的DLL文件名称。文件名中的英文字母不区分大小写,可以省略后缀“.dll”。如果是Windows系统DLL的话,可以省略不填。可以使用绝对路径或相对路径,使用相对路径时路径相对于当前“.e”文件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。