[英]Lua c++ lib sethook: Gives error with hook function arg
谷歌搜索了一段时间,不知道发生了什么。 因此,我有一个名为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);
我对此完全感到困惑,并且已经在谷歌上搜索了几个小时,请问有人可以解释我犯了什么样的愚蠢错误?
我的猜测是hookRoutine
是您的类的常规成员函数。 它必须是静态成员函数,因为Lua对C ++和this
指针一无所知。 如果需要,您需要找到其他方法this
指针传递给钩子函数(可能通过将其存储在注册表的Lua状态中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.