Lua c ++ lib sethook: выдает ошибку с помощью функции ловушки arg

Некоторое время гуглил, понятия не имею, что происходит.
Итак, у меня есть класс с именем luaScript, который обрабатывает сценарии lua (Удивительно! Я знаю.), Которые в своем текущем состоянии не могут выйти или приостановить выполнение сценариев, выполняемых в данный момент.

Я узнал о хуках, которые позволяют мне запускать код каждый раз, когда что-то происходит.
Также нашел интересный вопрос от stackoverflow 2009 года, показывающий, как их использовать.

Скопировал код, сделал хук, попытался скомпилировать и … ничего.
Ничего, кроме ошибки, говорящей, что функция, которую я передал ( 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 будучи экземпляром Луа и hookRoutine быть крюком

Вещи, которые я пробовал до сих пор:

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

Я полностью озадачен этим и часами гуглял, может кто-нибудь объяснить, какую глупую ошибку я совершил?

2

Решение

Я думаю, что hookRoutine является обычной функцией-членом вашего класса. Вместо этого она должна быть статической функцией-членом, потому что Lua ничего не знает о C ++ и this указатель. Вам нужно найти какой-то другой способ пройти this указатель на функцию хука в случае необходимости (возможно, путем сохранения ее в состоянии Lua в реестре).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]