基本说明本文所描述的部分功能需易语言 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) #pragma pack (1) //保存VC++编译器结构对齐字节数。 // 设置为以一字节对齐。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 命令:参数除了可以是基本数据类型或普通结构类型外,还可以是基本类型地址或基本类
创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达10多年累计超上千家客户的网站建设总结了一套系统有效的营销解决方案,现已广泛运用于各行各业的客户,其中包括:办公窗帘等企业,备受客户夸奖。
不用改后缀名,改了之后就不能运行了,直接用“运行()”这个命令就可以了,dll和可执行文件是不同的,dll动态链接库有程序接口可供其他程序调用里面的子程序,调用的时候只需要在易语言的dll列表里填好相关信息,然后像调用其他子程序一样调用就行了,也可以用dll注入
你新建一个
子程序
。然后在子程序下添加参数就可以了!调用的话把做好的DLL放到运行目录下。然后调用里插入个DLL然后
设置相关参数和编写时候的参数一样。然后是DLL文件名和子程序名就可以了
在易语言的左边功能选项找---程序---dl命令--右键---插入新dll命令
DLL命令名=你给他的名称(在窗口程序下可直接代码输入)
DLL库文件名=你调用那个DLL命名
DDL库中的对应名=在被调用的DLL的子程序
完了后直接在窗口下输入代码(DLL命令名)
打包的时候将DLL放置包下(可减少错误率)
要知道被调用的dll库文件中的函数命令名称、返回值和参数(以及其类型) 才可以在易语言里面调用;
在易语言中的调用方式为:新建一个windows窗口程序,然后在左边的界面选择“程序”,在DLL命令处右键点击选择插入新DLL命令,在DLL命令定义表中将DLL命令(在易语言中调用时使用的函数名称)、返回值类型(如果DLL函数对应命令有返回值的话)、DLL库文件名(如myDLL.dll)、在DLL库中对应命令名(即DLL库文件中的那个函数名称)以及函数下的参数和类型(必须与dll文件中的对应函数的保持一致)。
你的 DLL 有用到 这个 窗口 肯定 调用的时候 也就有了我写了 一个试了试 是可以的
下面这个是 DLL
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 返回值被忽略。
.子程序 _临时子程序
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 子程序1, , 公开
载入 (窗口1, , 真)
下面这个是声明 DLL
.版本 2
.DLL命令 DLL命令1, , "1", "子程序1"
下面这个是调用 DLL
.版本 2
.程序集 窗口程序集1
.子程序 _按钮1_被单击
DLL命令1 ()
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款