Lua c ++ lib sethook:使用钩子函数arg给出错误

时间:2017-11-19 09:37:03

标签: c++ lua lua-c++-connection

谷歌搜索了一段时间,不知道发生了什么。 所以我有一个名为luaScript的类,它处理lua脚本(令人惊讶!我知道。),它处于当前状态,无法退出或暂停当前正在执行的脚本。

我发现了钩子,它允许我在每次发生事件时运行代码。 还发现了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); 

我对此完全感到困惑并且已经谷歌搜索了几个小时,有人可以解释一下我犯了什么样的愚蠢错误吗?

1 个答案:

答案 0 :(得分:0)

我的猜测是hookRoutine是你班级的常规成员函数。它必须是一个静态成员函数,因为Lua对C ++和this指针一无所知。你需要找到一些其他方法将this指针传递给你的钩子函数,以备你需要它时(可能通过将它存储在Lua状态,在注册表中)。