2013-03-05 8 views
5

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); 
+0

Siehe auch http://stackoverflow.com/questions/11093189/lua-updating-from-5-1-lua-globalsindex-problems – lhf

Antwort

3

Der Code unten sollte in 5.1 und 5.2 funktionieren.

lua_getglobal(luaState, "myLuaFunction"); 
lua_pcall(luaState, 0, 0, 0); 

Aber stellen Sie sicher, den Return-Code von luaL_loadfile und von lua_pcall zu testen. Sie werden wahrscheinlich besser mit luaL_dofile umgehen.