Jestem całkiem nowy dla Lua. Przeglądam przykładowy kod, jak wywołać funkcję Lua z C++, ale przykładowy kod używa 5.1, a ja próbuję uruchomić to za pomocą 5.2.Wywołanie funkcji Lua 5.2 z C++
Oto przykładowy kod w pytaniu z moich uwag:
lua_State *luaState = luaL_newstate();
luaopen_io(luaState);
luaL_loadfile(luaState, "myLuaScript.lua");
lua_pcall(luaState, 0, LUA_MULTRET, 0);
//the code below needs to be rewritten i suppose
lua_pushstring(luaState, "myLuaFunction");
//the line of code below does not work in 5.2
lua_gettable(luaState, LUA_GLOBALSINDEX);
lua_pcall(luaState, 0, 0, 0);
Czytałem w 5,2 odniesienia Manuel (http://www.lua.org/manual/5.2/manual.html#8.3), które trzeba uzyskać globalne środowisko z rejestru (zamiast lua_gettable powyższe stwierdzenie), ale nie mogę ustalić, jakie zmiany muszę wprowadzić, aby to zadziałało. Próbowałem na przykład:
lua_pushglobaltable(luaState);
lua_pushstring(luaState, "myLuaFunction");
lua_gettable(luaState, -2);
lua_pcall(luaState, 0, 0, 0);
Zobacz także http://stackoverflow.com/questions/11093189/lua-updating- from 1-5-1-lua-globalsindex-problems – lhf