Eine funktion in einem Lua Script aus C++ aufrufen

Xervos

Erfahrenes Mitglied
Hallo Leute,

ich habe eine Frage.
Ich spiele gerade ein bisschen mit Lua und C++ rum und möchte gerne eine Funktion aufrufen die sich im Lua Script befindet.

bsp:
Code:
function OnInit()
	print "in funktion"
end

so nun möchte ich in C++ diese Funktion aufrufen. Ich habe da was im internet gelesen das man das so machen kann.

Code:
lua_getfield(g_LuaInstance, LUA_GLOBALSINDEX,  "OnInit");
	  lua_pcall(g_LuaInstance, 0, 0, 0);

nur irgendwie Funktioniert das nicht sooo wirklich, es passiert einfach gar nichts.
Weiß da einer wie das geht oder bzw. geht das überhaupt ?

lg
 
Hi.

Schau doch mal ob lua_getfield überhaupt eine Funktion zurückgegeben und ob lua_pcall einen Fehler zurückgegeben hat.

Gruß
 
Hallo,

danke dir, Ich habe es nun geschafft hänge aber beim nächsten Problem. Ich muss wenn ich eine Function registriere ein Static vor meine Funktion setzten. Wenn ich aber nun eine andere Funktion aus der Static aufrufen will geht das irgendwie nicht sooo ganz.
 
Ja es ist mir klar. Ich habe nur das Problem das ich zb diese Funktion habe die mir ein Objekt anlegt jetzt will ich das Objekt mit einem Lua script anlegen. Das geht aber dann nicht weil ich ja die "normale" funktion nicht starten kann
 
Hi danke für den Link, und sorry das ich erst jetzt antworte aber so richtig will mir das nicht klappen
vll zur erklärung;

ich wollte gerade ein bisschen mehr Flexibilität in mein Programm bringen und habe mich dazu entschieden, Teile meines Spiels ins
LUA zu exportieren. Ich wollte mir zuerst meine eigene Scriptsprache machen aber habe mich dann doch dazu entschieden nur eine APPI
zur verfügung zu stellen.

So weit so gut. Meine Idee hinter der Sache war es 5 Grundfunktionen zu definieren die dann vom Spiel aufgerufen werden:
Diese könnten folgende sein:

OnRise() -- wird aufgerufen wenn das Script das erste man gestartet wird.
OnSleep() -- wird aufgerufen wenn das Script pausiert wird
OnPulse() -- wird bei jedem Durchlauf aufgerufen
OnAwake() -- wird aufgerufen wenn das Script weiter geht
OnDie() -- wird aufgerufen wenn das Script nicht mehr gebraucht wird.

So, ok dann habe ich mal versucht Lua und c++ zu verbinden klappt auch. Ich kann den "Focus" setzten und rufe die spezielen
functionen auf. Klappt alles wunderbar. Das einzige was ich jetzt habe ich das ich nur Static Functions aufrufen kann.

So da ich aber eigene Funktionen brauche die dann weiter Klassen aufrufen habe ich versucht das ganze über LuaBind zu lösen nur
bekomme ich das nicht. Entweder ich habe alles was ich brauche "includes" und "DLL" dann kommen irgendwelche Linker fehler oder
ich habe nur die includes und keine dll dazu. Ich bin schon am verzweifeln.

Kann mir da einer Helfen wie ich das machen kann ?


lg
christoph
 
Hi.
So da ich aber eigene Funktionen brauche die dann weiter Klassen aufrufen habe ich versucht das ganze über LuaBind zu lösen nur
bekomme ich das nicht. Entweder ich habe alles was ich brauche "includes" und "DLL" dann kommen irgendwelche Linker fehler oder
ich habe nur die includes und keine dll dazu. Ich bin schon am verzweifeln.
Hast du denn die Luabind Bibliothek schon erstellt?`

Die Bibliothek mußt du dann natürlich mit zu deinem Programm linken.

Gruß
 
Zurück