2016-11-11 7 views
1

Mein Ziel ist es, einfach eine Tabellenfunktion aus C++ aufzurufen, die 'self' innerhalb der Funktion verwendet, um auf Felder und Funktionen dieser Tabelle zuzugreifen. Ich bekomme immer wieder den schönen 'Versuch, einen Nill-Wert (lokales Selbst) zu nennen' in der Zeile mit 'self.name'. Unten ist mein Lua-Skript.Call Lua Tabelle Funktion von C++ mit Selbst in Funktion

Unten ist mein C++ - Code (Ignorieren aller Fehlerbehandlung für jetzt).

lua_State* L = luaL_newstate(); 
luaL_openlibs(L); 
luaL_dofile(L, "foo.lua"); 
lua_getglobal(L, "Foo"); 
lua_getfield(L, -1, "OnUpdate"); 
lua_pcall(L, 0, 0, 0); 

Wenn 'lua_pcall' genannt wird, sehe ich 'In OnUpdate in Lua' im CLI, aber nie 'Foo'. Wenn ich den Fehler von 'lua_pcall' überprüfe, erhalte ich die oben genannte Fehlermeldung. Fehle ich vor dem Aufruf von 'lua_pcall' eine bestimmte Lua C API-Funktion? Ich bin mir der "." vs. ':' in lua für die Verwendung von 'Selbst'. Wenn ich im Lua-Skript einen Aufruf wie "Foo: Update()" hinzufüge, funktioniert alles perfekt. Das hat mich ratlos gemacht.

Antwort

0

Sie müssen den Wert Foo als erstes Argument senden. Also, tun

lua_pushvalue(L, -2); 
lua_pcall(L, 1, 0, 0); 
+0

Schön! Ich danke dir sehr! –