admin 发表于 2021-4-26 00:08:04

在客户端lua中引用易语言编译的dll


有时候我们需要一些权限 调用win32的api来实现一些特殊的功能
这个时候lua中没有相关接口 无法满足需求时
GA提供lua原版调用dll接口的方式 理论上支持所有语言编译出来的32位dll(易语言版)



首先在本帖中下载开发包lib.zip


文件目录:

[*]lib                     易语言支持库文件 请将放置在易语言安装目录的lib下
[*]static_lib            易语言支持库静态文件 请将放置在易语言安装目录的static_lib下
[*]2GA.exe            将易语言dll转换为GA模块 后面会有使用方法
[*]galib.dll             依赖文件 请放置游戏客户端目录(与登录器放一起)
[*]test.e               一个示例文件源代码 可以自己打开查看
[*]Ehelper.dll         test.e编译好的版本 可以自行查看

如何使用:

[*]把 lib static_lib 中的文件 各自放到易语言目录下
[*]打开test.e文件 选择工具 -- 支持库配置 -- 找到LUAHelper支持库 勾选确认
[*]

[*]编译 -- 静态编译 -- 编译出dll文件(这里假设文件名为 Ehelper.dll)
[*]打开2GA.exe 把编译出来的Ehelper.dll文件放进去 会得到一个 Ehelper_new.dll 文件
[*]把文件Ehelper_new.dll 改名回 Ehelper.dll (注意:必须与 luaopen_Ehelper 中的 Ehelper 同名[大小写敏感] 这是lua的require机制决定的 )
[*]将 Ehelper.dll 与 galib.dll 放入游戏客户端(与登录器同目录)
[*]进入游戏测试 以下是测试代码


require("Ehelper")
msgbox('来自易语言的问候!','提示')
Cli.SysMessage('当前日期为:'.. getdate(),4,3)





注意事项:

[*]易语言编译出来的dll会产生浮点数错误 需要在加减乘除运算的函数前加上 置入代码 ({219,227})
[*]
[*]易语言很多支持库不支持多线程 请尽量不要使用多线程
[*]易语言与C语言一样 也是内存不安全的语言 没有GC垃圾回收机制 请注意内存泄漏 数组溢出等问题
[*]由于可以直接调用win32系统api 所以GA不支持对调用本地代码的维护与BUG排查 请自行注意
[*]dll文件可自行打包到登录器或者使用登录器更新 支持多个dll 请依次require即可
[*]require单个dll 只需在脚本最前执行一次即可
[*]如发现写入恶意代码(如病毒木马 矿机等) 对玩家权益造成损害并有玩家举报 GA有权利终止服务















yangxudou 发表于 2022-3-4 10:48:26


希望论坛越办越好,会员越来越多,越来越活跃
页: [1]
查看完整版本: 在客户端lua中引用易语言编译的dll