Ich bin ziemlich neu zu Lua. Ich habe einen Beispielcode für das Aufrufen einer Lua-Funktion aus C++ gelesen, aber der Beispielcode verwendet 5.1 und ich versuche, dies mit 5.2 zu erreichen.Aufruf Lua 5.2 Funktion von C++
Hier ist der Beispielcode in Frage mit meinen Kommentaren ist:
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);
ich in der 5.2 Referenz manuel gelesen habe (http://www.lua.org/manual/5.2/manual.html#8.3) braucht, dass man die globale Umwelt aus der Registrierung zu erhalten (statt der lua_gettable Aussage), aber ich kann nicht herausfinden, welche Änderungen ich machen muss, damit das funktioniert. Ich habe versucht, zum Beispiel:
lua_pushglobaltable(luaState);
lua_pushstring(luaState, "myLuaFunction");
lua_gettable(luaState, -2);
lua_pcall(luaState, 0, 0, 0);
Siehe auch http://stackoverflow.com/questions/11093189/lua-updating-from-5-1-lua-globalsindex-problems – lhf