Lua c++ lib sethook:使用hook函数参数出错

一直在Google搜索,不知道发生了什么。 所以我有一个名为luaScript的类,它处理lua脚本(惊人吧!我知道。),在其当前状态下,无法退出或暂停当前正在执行的脚本。

我发现了关于hooks的信息,它允许我在每次发生某些事件时运行代码。 还找到了一个很酷的stackoverflow问题,2009年的,展示了如何使用hooks。

复制代码,完成hook,尝试编译,但是......没有任何反应。 除了错误,说我传递的函数(void hookRoutine(lua_State * L,lua_Debug * ar))与类型lua_Hook不兼容(我觉得这完全是胡说八道,因为 lua_Hook 被定义为 typedef void(* lua_Hook)(lua_State * L,lua_Debug * ar); 直到我知道它的样子是完全一样的。)

这是我复制的代码: lua_sethook(mL,hookRoutine,LUA_MASKCOUNT,0);其中 mL 为lua实例,hookRoutine 是hook。

到目前为止,我尝试过的事情:

lua_Hook hookRoutine
lua_sethook(mL,&hookRoutine,LUA_MASKCOUNT,0) 
lua_sethook(mL,lua_Hook(hookRoutine),LUA_MASKCOUNT,0));

我完全被卡住了,已经Google搜索了几个小时,可以有人解释一下我所犯的愚蠢错误吗?

点赞
用户8316315
用户8316315

我猜测 hookRoutine 是你的类的常规成员函数。但实际上它需要是一个静态成员函数,因为 Lua 不知道 C++ 和 this 指针。如果你需要 this 指针,你需要寻找另一种方法来将它传递到你的钩子函数中(可能是通过在 Lua 状态中存储它,在注册表中)。

2017-11-19 10:53:26