Wie lua (oder eine andere Skriptsprache) in eine C # 5.0-Anwendung eingebettet wird

8

Zunächst möchte ich mich im Voraus für mein Englisch entschuldigen.

Meine Frage bezieht sich speziell darauf, was ich in einer C # -Anwendung haben muss, um ein Lua-Skript interpretieren zu können, das dieser Anwendung zugeführt wird. Die Lua-Skripte müssen Zugriff auf in C # geschriebene Klassen haben können.

Nach dem Durchsuchen des Stack-Überlaufs nach einer Antwort denke ich, dass die Fragen, die sich mit diesem Thema beschäftigen, veraltet sind (ich denke, sie wurden gefragt, bevor die Dynamic Language Runtime Teil des .NET Framework wurde) und ich denke, die Dinge sind jetzt einfacher dass wir das DLR haben).

Grundsätzlich wollte ich das tun

%Vor%

Nun, das heißt, es ist uns egal, was script.lua zurückgibt. Aber es würde Szenarien geben, in denen die zweite Zeile ungefähr so ​​aussehen würde:

%Vor%

oder das:     dynamisches Ergebnis;     TypeThatExecutesLua.Execute (out result);

Wenn möglich, möchte ich auch Argumente an die Skripte übergeben können (nicht sicher, ob das Argument in diesem Fall das richtige Wort ist, ich weiß wenig über Skripte), so:

%Vor%

Dies ist wahrscheinlich eine sehr grundlegende Frage, aber ich würde wirklich eine Antwort schätzen, die mir wirklich erklären würde, wie man das tut, anstatt einen Link zu einer Seite, weil mir das Grundwissen fehlt, um das meiste des Materials zu verstehen Ich kam bisher durch die Suche im Internet (ich bin ziemlich gut in C #, aber das ist außerhalb der Reichweite der Sprache selbst).

Als letzte Anmerkung möchte ich sagen, dass, obwohl Lua meine Zielsprache ist, die Lösung ähnlich oder identisch mit irgendeiner anderen Sprache ist und sich nur in Sachen unterscheidet, welche DLL in Ihrem Projekt heruntergeladen und referenziert werden soll Schnittstelle von dll selbst, würde ich gerne wissen.

    
user3251430 08.03.2014, 09:51
quelle

2 Antworten

4

Es sieht aus wie DynamicLua ( GitHub , NuGet-Paket ) hat, was Sie wollen:

%Vor%

DynamicLua basiert auf NLua , was all dies auch tun kann, aber es wird komplizierter.

>     
Craig 08.03.2014 18:40
quelle
0

Sie könnten TCL, den Großvater des eingebetteten Skripts, verwenden:

(1) Laden Sie ActiveState TCL herunter und installieren Sie es.

(2) Kopieren Sie die Datei C: \ Tcl \ bin \ tcl86.dll und C: \ Tcl \ bin \ zlib1.dll an die Stelle, an der sich Ihre C # exe für Ihre Anwendung befindet, höchstwahrscheinlich im Verzeichnis "Debug". (Hinweis: Die 86-Versionsnummer muss möglicherweise an die tatsächlich heruntergeladene TCL-Version angepasst werden.) Sie können die Datei tcl86.dll auch in ein Verzeichnis kopieren, das Ihr SYSTEM-Pfad ist. Das ist jedoch etwas verwirrend, wenn Sie Ihre Anwendung von Ihrem Computer verschieben möchten und es nicht funktioniert, weil eine tcl86.dll fehlt.

(3) Löschen Sie die ActiveState TCL-Installation, wenn Sie sie nicht im Verzeichnis C: \ Tcl haben möchten.

(3) Erstellen Sie eine C # -Konsolenanwendung. Legen Sie das Flag für die Kompilierungseigenschaften des Projekts auf "unsicheren" Code fest. (Weil tcl86.dll in seiner Ergebnisrückgabeschnittstelle einen char * -Zeiger verwendet.)

(4) Ausschneiden und fügen Sie Folgendes in Ihr c # -Konsolenprojekt ein:

%Vor%

Wenn Sie ein TCL-Skript auswerten müssen, verwenden Sie den TCL-Befehl "source" in der Evaluierungsdatei.

    
Bill Moore 09.03.2017 15:28
quelle