【问题标题】:Lua c++ lib sethook: Gives error with hook function argLua c ++ lib sethook:使用钩子函数arg给出错误
【发布时间】:2018-05-02 16:39:07
【问题描述】:

在谷歌上搜索了一段时间,不知道发生了什么。 所以我有一个名为 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); 

我完全被这件事难住了,已经在谷歌上搜索了几个小时,有人可以解释一下我犯了什么愚蠢的错误吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      相关资源
      最近更新 更多