C# und Lua — Aktuelle Möglichkeiten?

Ich habe eine Anwendung, die verwendet die Mono-Implementierung von LuaInterface, und es funktioniert wunderbar ohne jede Probleme auf Linux. Ich kann nicht LuaInterface arbeiten mit der Windows-version meiner Anwendung überhaupt. Ich habe zwei volle Tage versucht, diese zu arbeiten und ich fühle mich wie ich bin etwas fehlt, wirklich basic.

Den 'neuesten' LuaInterface kompiliert wird gegen eine frühere version von .NET und funktioniert nicht mit 4.0. Ich drehte mich, einen einzigen link zu einem .dll kompiliert 4.0, aber der link ist tot. Ich habe versucht zu greifen, die LuaInterface Quelle und kompilieren Sie es gegen 4.0 und mich, aber Visual Studio 2010 Fehler beim öffnen der Lösung, weil die Projekt-Typen wurden nicht unterstützt (oder einige Fehler, die Wirkung).

Habe ich versucht, MonoLuaInterface für die Windows-version; obwohl der Autor sagt, dass es funktioniert auf Windows, die es einfach nicht. Die Fehler, die ich laufen in ist, dass egal was ich mache, ich kann nicht luanet.dll werden vom Programm erkannt. Ich habe versucht, indem Sie es in das gleiche Verzeichnis wie die ausführbare Datei, ich habe versucht Einstellung LUA_PATH und LUA_CPATH am start, und egal was passiert, es wirft nur bei der ersten Erwähnung der luanet.dll. Ich kann nicht einmal die Beispiel-Projekte zu bauen, Sie können nicht finden, luanet.dll und sind einfach tot im Wasser.

Versuchte ich NLua als gut, und dass war nur ein Alptraum.

Also meine Frage ist: kennt jemand eine andere (Arbeits -) Implementierungen des Lua auf .NET? Ich werde es umschreiben, dass die meisten der glue-code, wenn ich muss, ich muss einfach dies funktioniert. Alternativ, kann jemand mich in Richtung eine Lösung für die luanet.dll Frage oder sogar eine Antwort auf die LuaInterface-source-Problem?

Ich weiß, das ist eine wirklich umfassende Frage, aber ich bin völlig verloren und haben absolut keine Ahnung, wo Sie beginnen sogar versucht, diese zu lösen. Vielen Dank im Voraus an jeden, der Ideen.


Okay, ich habe einige Fortschritte gemacht. Ich habe versucht, NLua wieder, und erinnerte sich, was sein problem war. Nach ein wenig Experimentieren, hier ist was ich herausgefunden habe.

Den Lua-scripts, die ich verwenden Schnittstelle mit dem rest des Programmes durch eine importierte Art, genannt die EventManager, die geladen wird, beim start das entsprechende script. Der EventManager ist ein singleton, und ich sofort ordnen Sie die Instanz mit dem code:

EVENTMANAGER = luanet.import_type("Program.EventManager")
Event = EVENTMANAGER.Instance

Ab diesem Zeitpunkt in den code rufe ich die freiliegenden Methoden mit Hilfe von Event:whateverfunction(). Dieses funktioniert eigentlich gut, wenn ich rufen Sie den code mit NLua ist DoString () - Methode. Das problem kommt, wenn ich versuche, rufen Sie diese Methoden in einer koroutine auf der Lua-Seite, die ist, wie alles eigentlich geschrieben. Wenn ich dies mache, NLua wirft eine NullReferenceException. Stack trace ist wie folgt:

   System.NullReferenceException at NLua.MetaFunctions.GetMethod(LuaState luaState)
   at KeraLua.NativeMethods.LuaNetPCall(IntPtr luaState, Int32 nArgs, Int32 nResults, Int32 errfunc)
   at KeraLua.Lua.LuaNetPCall(IntPtr luaState, Int32 nArgs, Int32 nResults, Int32 errfunc)
   at NLua.LuaLib.LuaPCall(LuaState luaState, Int32 nArgs, Int32 nResults, Int32 errfunc)
   at NLua.Lua.DoString(String chunk, String chunkName)

So, ich bin näher, um herauszufinden dieses heraus, aber ich weiß immer noch nicht, wo zu gehen, über dies zu beheben.

  • Was ging schief mit NLua?
  • Hey, ich habe auf der Suche für die gleiche Sache in der vergangenen Woche, aber ohne Glück so weit. Alle Versionen, die ich gefunden habe sind nicht kompatibel mit LuaJIT, da Sie eine lua51.dll und es gibt daneben keine Informationen über die luanet.dll entweder. Ich hoffe, jemand kann etwas Licht auf diese ganze Sache.
  • NLua war eigentlich der, den ich die meiste Zeit verbracht wrestling mit. Es kompiliert einwandfrei, und es selbst instanziiert ein Lua-Objekt ordnungsgemäß (keine anderen Optionen, die es bis hierher geschafft haben), aber sobald ich versuchte, Sie zu einer Klasse importiert werden, luanet.import_assembly(), eine der .dlls hat einen internen Fehler und stürzte das Programm ab. Der code in Frage, arbeitete gut mit LuaInterface, aber es wird eine null-Verweis-Ausnahme irgendwo in der .dll. Ich werde das boot in windows ein wenig und Holen Sie sich die aktuellen Fehler, die auftreten.
  • Können Sie haben, um es zu kompilieren mit einem anderen Aufruf-Konvention, ich weiß nicht anmaßen, es zu verstehen, aber hier ist etwas von meiner allwissenden Lesezeichen-Bibliothek: ttuxen.wordpress.com/2009/11/03/embedding-lua-in-dotnet/...
  • Können Sie das erstellen eines kleinen test-Fall @cmark89 ? Und öffnen Sie ein Problem auf github.com/nlua/nlua/issues, vielen Dank.
InformationsquelleAutor cmark89 | 2013-09-18
Schreibe einen Kommentar