ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
2496
2496
EMPFEHLEN
-
Ich will eine funktion der Klasse CPHLView (meine Ansichtsklasse) mit der lua funktion lua_register(...) für LUA verfügbar machen. Dabei bekomme ich immer wieder den fehler:
Das ist die Funktion, die lua_register aufruft: error C2664: 'lua_pushcclosure' : Konvertierung des Parameters 2 von 'int (struct lua_State *)' in 'int (__cdecl *)(struct lua_State *)' nicht moeglich
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
void CPHLView::OnExec() { lua_State* luaVM = lua_open(); lua_baselibopen(luaVM); lua_iolibopen(luaVM); lua_strlibopen(luaVM); lua_mathlibopen(luaVM); lua_register(luaVM, "Relais_On", l_Ron); lua_register(luaVM, "Relais_Off", l_Roff); lua_register(luaVM, "Wait", l_wait); lua_dofile(luaVM, "test.txt"); lua_close(luaVM); }
und das ist eine der funktionen die ich für lua verfügbar machen möchte:
Code :1 2 3 4 5 6 7 8 9
int CPHLView::l_wait(lua_State *luaVM) { CRelaisCtrl *rl = new CRelaisCtrl; rl->wait((int)lua_tonumber(luaVM, 1)); lua_pushnumber(luaVM, 0); delete rl; return 1; }
-
Lua kann keine Member-Funktionen binden (zumindest nicht direkt). Bei Member-Funktion einer Klasse/eines Structs wird implizit ein this-Pointer auf die aktuelle Instanz mitübergeben, und der stört in dem Fall (Lua will ja nur einen Parameter, ein lua_State*).
Versuche die gewünschte Funktion static zu deklarieren. So wie deine Funktion aussieht, sollte das Problemlos gehen.
Wenn du wirklich Objekte von Lua aus ansprechen willst, bist du besser mit einem Class-Wrapper beraten.
Hier 2, die ich persönlich verwende:
Luna: ein einfacher Template-Header, Parameter müssen selbst vom Stack geholt und wieder auf den Stack geschoben werden. Ist aber sehr compiler-freundlich, hat keine grossen Ansprüche
LuaBind: Ein mächtiger Template-Komplex, stützt sich auf Boost. D.h. Boost muss zusätzlich verfügbar sein. Dafür erhält man einfachste Klassen- und Funktionsdefinition, die Parameter werden automatisch aus- und eingepackt. Kann den Compiler mächtig in die Knie zwingen, vor allem bei mehr als 3 Parametern.
Hat in der letzten von mir getesten Version Probleme mit coroutines. Müsste allerdings inzwischen auch schon behoben sein.
-
13.07.10 12:18 #3aug123 Tutorials.de Gastzugang
Das gibt dann bei MFC aber weitere Probleme weil die MFC-Mutterklassen das Kompilieren der Templateklasse stören.
Ähnliche Themen
-
Array auslesen ohne den Index zu kennen
Von Herror im Forum PHPAntworten: 4Letzter Beitrag: 18.09.09, 21:03 -
sql Select auf Tabelle ohne Spaltennamen zu kennen
Von StefanLausL im Forum Relationale DatenbanksystemeAntworten: 11Letzter Beitrag: 26.05.09, 14:04 -
Suche Leute die gute RollenSpiel Fantasy und auch Fantasy Figuren zeichnen können!
Von xyba im Forum Stellenangebote (unentgeltlich)Antworten: 3Letzter Beitrag: 12.11.08, 19:04 -
Firefox funktioniert nicht auch nicht nach neuinstallation
Von Confed im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 28.11.07, 14:44 -
Wo lernt Ihr eure Freundinnen/Freund kennen?
Von urika im Forum SmalltalkAntworten: 13Letzter Beitrag: 06.08.04, 17:40





Zitieren
Login





