跳到主要内容

lua51

简介

luajit

用于执行 lua 脚本, 已经相关 lua 代码

目前 luajit 存在问题, 请管理 jit 使用, 不然有崩溃风险

组件接口

lua51.gs

函数原型函数作用
object open()新建一个 lua 虚拟机, 并绑定到 gs 操作类上
int newstate()新建一个 lua 虚拟机

lua_state.gs

lua 虚拟机的操作类

函数原型函数作用
void init(int _L, bool hook_print = false)将 lua 虚拟机绑定到操作句柄上
int log_print(mixed str)用于 hook lua 的 print 函数
mixed register_func(function func, string name = nil, int argv = -1)将 gs 函数注册到 lua 中
void register_ffi(int ffi_ptr, string name = nil)将 ffi.map_function 生成的函数指针, 以 name 注册到 luajit 中
void register_object(object obj)向 lua 注册 gs 对象
int wrapper_function(string name, int argv, int LL)生成 lua 调用 gs 使用的中间函数
mixed dostring(mixed str_or_buf, ...)将 string 作为 lua 脚本执行
mixed dostring_args(mixed str_or_buf, array args)执行 lua 脚本, 脚本参数保存在 args 中
mixed dofile(string path)加载 lua 文件
mixed pcall(string func_name, ...)调用 lua 函数
mixed pcall_args(string func_name, array args)调用 lua 函数
void gc()调用 lua gc

样例

// 启动虚拟机
_lua = lua51.open();

// 向 lua 注册 gs 函数
_lua.register_func((: log :));

// 向 lua 注册 gs 对象
object obj = load_static(a);
_lua.register_object(obj);

// 加载 lua 文件
_lua.dofile("/lua/f.lua");

// 调用函数
write(_lua.pcall("PrintX", "中文"));