Я пытаюсь вызвать пользовательскую функцию Lua из C. Я видел некоторое обсуждение этого вопроса, и решение кажется ясным. Мне нужно получить индекс функции с помощью luaL_ref () и сохранить возвращенный индекс для использования позже.
В моем случае я сохранил значение с помощью luaL_ref, и я нахожусь в точке, где мой код на C должен вызывать функцию Lua, сохраненную с помощью luaL_ref. Для этого я использую lua_rawgeti следующим образом:
lua_rawgeti(l, LUA_REGISTRYINDEX, fIndex);
Это вызывает сбой в lua_rawgeti.
Используемый мною индекс - это значение, которое я получил от luaL_ref, поэтому я не уверен, что здесь происходит.
EDIT:
Я запускаю скрипт Lua следующим образом:
function errorFunc()
print("Error")
end
function savedFunc()
print("Saved")
end
mylib.save(savedFunc, errorFunc)
Я определил свою собственную библиотеку Lua 'mylib' с функцией C:
static int save(lua_State *L)
{
int cIdx = myCIndex = luaL_ref(L, LUA_REGISTRYINDEX);
int eIdx = luaL_ref(L, LUA_REGISTRYINDEX);
Я сохраняю cIdx и eIdx до более позднего момента времени, когда получаю какое-то внешнее событие, и в этот момент я хотел бы вызвать одну из функций, заданных в качестве параметров в моем Lua-скрипте. Здесь (в том же потоке, используя тот же lua_State *), я вызываю:
lua_rawgeti(L, LUA_REGISTRYINDEX, myCIndex);
Что является причиной сбоя.