易语言如何调用指定DLL文件? 20
4个回答
2012-04-09
展开全部
基本说明本文所描述的部分功能需易语言 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 命令:参数除了可以是基本数据类型或普通结构类型外,还可以是基本类型地址或基本类
2015-06-26
展开全部
本人只抓重点,如果有误请谅解。
1.打开dll命令定义表,并右键,选择插入dll命令
2.按照提示填写对应的参数。dll库文件名指dll文件的目录,如果只输入名字如run.dll则会默认为当前目录下;在库中对应文件名指在dll里的子程序名称,而dll的调用名称则可以随便定,推荐一致。举个例子,dll里的子程序名是run,你在dll里的库对应文件名里填run,而你填在dll命令名称为’运行,仍然可以调用;dll的子程序里的参数内容要顺序一致,参数名称一致,参数类型一致,才可以成功调用。
3.开始调用这个dll命令,如果成功则会正常运行,如果错误为没有***命令,则是在库中对应文件名没有填写正确或文件名输入错误。
1.打开dll命令定义表,并右键,选择插入dll命令
2.按照提示填写对应的参数。dll库文件名指dll文件的目录,如果只输入名字如run.dll则会默认为当前目录下;在库中对应文件名指在dll里的子程序名称,而dll的调用名称则可以随便定,推荐一致。举个例子,dll里的子程序名是run,你在dll里的库对应文件名里填run,而你填在dll命令名称为’运行,仍然可以调用;dll的子程序里的参数内容要顺序一致,参数名称一致,参数类型一致,才可以成功调用。
3.开始调用这个dll命令,如果成功则会正常运行,如果错误为没有***命令,则是在库中对应文件名没有填写正确或文件名输入错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本人只抓重点,如果有误请谅解。
1.打开dll命令定义表,并右键,选择插入dll命令
2.按照提示填写对应的参数。dll库文件名指dll文件的目录,如果只输入名字如run.dll则会默认为当前目录下;在库中对应文件名指在dll里的子程序名称,而dll的调用名称则可以随便定,推荐一致。举个例子,dll里的子程序名是run,你在dll里的库对应文件名里填run,而你填在dll命令名称为‘运行’,仍然可以调用;dll的子程序里的参数内容要顺序一致,参数名称一致,参数类型一致,才可以成功调用。
3.开始调用这个dll命令,如果成功则会正常运行,如果错误为没有***命令,则是在库中对应文件名没有填写正确或文件名输入错误。
希望能帮到你
1.打开dll命令定义表,并右键,选择插入dll命令
2.按照提示填写对应的参数。dll库文件名指dll文件的目录,如果只输入名字如run.dll则会默认为当前目录下;在库中对应文件名指在dll里的子程序名称,而dll的调用名称则可以随便定,推荐一致。举个例子,dll里的子程序名是run,你在dll里的库对应文件名里填run,而你填在dll命令名称为‘运行’,仍然可以调用;dll的子程序里的参数内容要顺序一致,参数名称一致,参数类型一致,才可以成功调用。
3.开始调用这个dll命令,如果成功则会正常运行,如果错误为没有***命令,则是在库中对应文件名没有填写正确或文件名输入错误。
希望能帮到你
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
知道dll的接口才行哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询