C语言模块回调Lua函数的两种方法

lua和C通过虚拟栈这种交互方式简单而又可靠,缺点就是C做栈平衡稍微会多写一点代码。 今天分享学到的C模块回调Lua函数的两种方法,都是炒冷饭,大侠勿喷。

1. C保存函数对象

C模块可以通过注册表保存Lua里面的对象,等适当时候取出再调用即可。

static int lua_callback = LUA_REFNIL;

static int setnotify(lua_State *L)

{

  lua_callback = luaL_ref(L, LUA_REGISTRYINDEX);

  return 0;

}

static int testnotify(lua_State *L)

{

  lua_rawgeti(L, LUA_REGISTRYINDEX, lua_callback);

  lua_call(L, 0, 0);

}

以上是 C语言模块回调Lua函数的两种方法 的全部内容, 来源链接: utcz.com/z/325893.html

回到顶部