易语言中调用 DLL使用说明 基本说明 本文所描述的部分功能需易语言4
01 或以上版本支持
“在易语言中调用 DLL”包含两方面的内容:调用 Window s 系统 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 字节对齐