- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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的编程语言中的数据类型并不完全一致,需进行适当的转换,详见下文数据类型对照表。 公开 目前不被使用。
您可能关注的文档
- 国家公务员考试测真题答案下载【完整打印版】.doc
- 国家公务员考试测高分训练判断推理逻辑判断.docx
- 国家司法考试(卷二).doc
- 国家对电子商务业有什么政策.doc
- 国家火炬计划火软件产业基地软件人才分析.docx
- 国家自然科学基学科分类目录全科.doc
- 国家集训队205论文集 胡伟栋.doc
- 国家集训队208论文集非完美算法初探——任.doc
- 国旗下的主题发手册.docx
- 国民信托EAS数据采集与分析系统SOW_20120731.doc
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
最近下载
- 心肺运动试验课件.ppt
- GBT19001-2022《质量管理体系 要求》.docx
- 病媒生物防制投标方案(完整版).docx
- 幼儿园小学美术PPT课件教案教程创意幼教手工《备年货》.pptx
- 普通高中政治课程标准测试题及答案.pdf
- 新教材2024届高考语文二轮专项分层特训卷第二部分组合循环练练习23语言文字运用 现代文阅读Ⅱ.doc VIP
- GB_T 37364.3-2024 陆生野生动物及其栖息地调查技术规程 第3部分:兽类.pdf
- 《介入性超声》课件.pptx VIP
- 《 企业突发环境事 件风险分级方法》(HJ 941-2018).pdf
- 074-万达广场范围内充电设备安全管控规范.docx VIP
文档评论(0)