2017-11-19 9 views
2

しばらくの間、グーグルグーグルで何が起こっているのか分かりません。 私はluaScriptというクラスを持っています。これは現在の状態では、現在実行中のスクリプトを終了したり一時停止したりすることができないluaスクリプト(Surprising!知っています)を処理します。Lua C++ lib sethook:フック関数argにエラーが発生しました

私は何かが起こるたびにコードを実行できるフックについて知りました。 また、それらを使用する方法を示す2009年からのクールなstackoverflow質問が見つかりました。

コードがコピーされ、フックが完了し、コンパイルしようとしましたが、何もありません。 何も私は渡された関数(void hookRoutine(lua_State *L, lua_Debug *ar))はタイプlua_Hookとの互換性がありませんでしたというエラー(lua_Hookは、私の知る限りでは、私はそれを与えたまさにあるtypedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); として定義されているので、私は総BSを見つける。)

これは私がコピーしたコードです: lua_sethook(mL, hookRoutine, LUA_MASKCOUNT, 0); mLはルアインスタンス、hookRoutineはフックです。私がこれまで試してみました

もの:私は完全にこれに困惑していますし、時間グーグルされている

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

、誰かが私が作った愚かなエラーの種類を説明してくださいできますか?

答えて

0

私の推測では、hookRoutineはあなたのクラスの通常のメンバー機能です。 LuaはC++とthisポインタについて何も知らないので、代わりに静的メンバー関数でなければなりません。必要ならば(おそらくそれをレジストリのLua状態に保存することによって)thisポインタをあなたのフック関数に渡す他の方法を見つける必要があります。

関連する問題