我发现了钩子,它允许我在每次发生事件时运行代码。 还发现了2009年的一个很酷的stackoverflow问题,展示了如何使用它们。
复制代码,完成钩子,尝试编译,并且......没有。
只有一个错误,说我传递的函数(void hookRoutine(lua_State *L, lua_Debug *ar)
)与类型lua_Hook
不兼容(我找到了总bs,因为lua_Hook
被定义为typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
据我所知,这正是我给它的。 )
这是我复制的代码:
lua_sethook(mL, hookRoutine, LUA_MASKCOUNT, 0);
mL
是lua实例,hookRoutine
是钩子。
到目前为止我尝试过的事情:
lua_Hook hookRoutine
lua_sethook(mL, &hookRoutine, LUA_MASKCOUNT, 0);
lua_sethook(mL, lua_Hook(hookRoutine), LUA_MASKCOUNT, 0);
我对此完全感到困惑并且已经谷歌搜索了几个小时,有人可以解释一下我犯了什么样的愚蠢错误吗?
答案 0 :(得分:0)
我的猜测是hookRoutine
是你班级的常规成员函数。它必须是一个静态成员函数,因为Lua对C ++和this
指针一无所知。你需要找到一些其他方法将this
指针传递给你的钩子函数,以备你需要它时(可能通过将它存储在Lua状态,在注册表中)。