В функции C, вызванной из моего сценария Lua, я использую luaL_ref
для хранения ссылки на функцию. Однако, если я попытаюсь использовать возвращаемый целочисленный индекс для извлечения этой функции из другого потока, который не является производным от одного и того же состояния, все, что я возвращаю, это nil
. Вот самый простой пример, который, кажется, чтобы продемонстрировать это:Lua реестра не видно из новых состояний
// Assumes a valid lua_State pL, with a function on top of the stack
int nFunctionRef = luaL_ref(pL, LUA_REGISTRYINDEX);
// Create a new state
lua_State* pL2 = luaL_newstate();
lua_rawgeti(pL2, LUA_REGISTRYINDEX, nFunctionRef);
const char* szType = luaL_typename(pL2, -1);
Я нахожу, что szType
затем содержит значение «ноль».
Насколько я понимаю, реестр был глобально распространен между всеми C-кодом, так что может кто-нибудь объяснить, почему это не работает?
Если реестр не разделяется глобально таким образом, как я могу получить доступ к моим значениям, как мне нужно, из другого сценария?
Удален тег 'registry', поскольку он, очевидно, относится к реестру Windows. – akauppi