Lua c++ lib sethook:钩子函数 arg 出错
Lua c++ lib sethook: Gives error with hook function arg
谷歌搜索了一段时间,不知道发生了什么。
所以我有一个名为 luaScript 的 class 脚本,它处理 lua 脚本(令人惊讶!我知道。),在当前状态下,无法退出或暂停当前正在执行的脚本。
我发现了钩子,它允许我在每次发生事情时 运行 编写代码。
还发现了 2009 年的一个很酷的 Whosebug 问题,展示了如何使用它们。
复制了代码,完成了钩子,尝试编译,然后……什么都没有。
只不过是一个错误,说我传递的函数( 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
是您的 class 的常规成员函数。它必须是静态成员函数,因为 Lua 对 C++ 和 this
指针一无所知。您需要找到一些其他方法将 this
指针传递给您的钩子函数以备不时之需(可能通过将其存储在注册表中的 Lua 状态)。
谷歌搜索了一段时间,不知道发生了什么。 所以我有一个名为 luaScript 的 class 脚本,它处理 lua 脚本(令人惊讶!我知道。),在当前状态下,无法退出或暂停当前正在执行的脚本。
我发现了钩子,它允许我在每次发生事情时 运行 编写代码。 还发现了 2009 年的一个很酷的 Whosebug 问题,展示了如何使用它们。
复制了代码,完成了钩子,尝试编译,然后……什么都没有。
只不过是一个错误,说我传递的函数( 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
是您的 class 的常规成员函数。它必须是静态成员函数,因为 Lua 对 C++ 和 this
指针一无所知。您需要找到一些其他方法将 this
指针传递给您的钩子函数以备不时之需(可能通过将其存储在注册表中的 Lua 状态)。