繁体   English   中英

Lua C ++ lib sethook:使用挂钩函数arg给出错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM