这篇文章主要介绍了C语言模块回调Lua函数的两种方法,本文讲解了C保存函数对象、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函数的两种方法的详细内容,更多请关注0133技术站其它相关文章!