有时候我们需要一些权限 调用win32的api来实现一些特殊的功能
这个时候lua中没有相关接口 无法满足需求时
GA提供lua原版调用dll接口的方式 理论上支持所有语言编译出来的32位dll(易语言版)
首先在本帖中下载开发包lib.zip
lib.zip
(6.1 MB, 下载次数: 65)
文件目录:
- 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有权利终止服务
|