Sono piuttosto nuovo a Lua. Ho cercato un codice di esempio per come chiamare una funzione Lua da C++, ma il codice di esempio usa 5.1 e sto cercando di farlo funzionare con 5.2.Chiamare la funzione Lua 5.2 da C++
Ecco il codice di esempio in questione con i miei commenti:
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);
ho letto nel 5.2 di riferimento Manuel (http://www.lua.org/manual/5.2/manual.html#8.3), che si ha la necessità di ottenere l'ambiente globale dal Registro di sistema (al posto del lua_gettable dichiarazione di cui sopra) ma non riesco a capire quali cambiamenti devo fare per farlo funzionare. Ho provato, ad esempio:
lua_pushglobaltable(luaState);
lua_pushstring(luaState, "myLuaFunction");
lua_gettable(luaState, -2);
lua_pcall(luaState, 0, 0, 0);
Vedere anche http://stackoverflow.com/questions/11093189/lua-updating-from-5-1-lua-globalsindex-problems – lhf