Lua in C++ einbinden

Diskutiere Lua in C++ einbinden im C/C++ Forum; Hallo! Ich programmiere erst seit kurzem C++, habe aber ein wenig erfahrung mit Lua. Weiß jemand von euch wie man Lua in C++ einbinden kann? Ich...

  1. Simon Programmiert
    Simon Programmiert Neues Mitglied
    Hallo!
    Ich programmiere erst seit kurzem C++, habe aber ein wenig erfahrung mit Lua.
    Weiß jemand von euch wie man Lua in C++ einbinden kann?
    Ich werde aus Artikeln im Internet nicht Schlau :(

    Danke im voraus,
    Mfg Simon
     
  2. httpdigest
    httpdigest Aktives Mitglied
    Mehrere Möglichkeiten:
    - wenn du mit deinem Lua Script per stdin/stdout/stderr Interface kommunizieren möchtest, reicht es, einen Lua Prozess als Kindprozess zu starten (hängt vom Betriebssystem ab, wie genau) und dich mit stdin/stdout/stderr zu verbinden
    - wenn du engere Integration als Library haben möchtest (um z.B. den Lua Stack zu manipulieren und auszulesen), dann empfehle ich dir LuaJIT als Laufzeitumgebung und Just-In-Time Compiler. Es bietet eine C API, die auch per src/lua.hpp C++ Header eingebunden werden kann (verwendet letztlich "C" Linkage).

    Für letzteren Weg folge einfach der Anleitung hier: https://en.blog.nic.cz/2015/08/12/embedding-luajit-in-30-minutes-or-so/

    (Voraussetzung: Du weißt, wie man C/C++ Sourcen kompiliert und linkt und wie man Include und Library Abhängigkeiten in den entsprechenden Schritten hinzufügt/konfiguriert, abhängig von deinem verwendeten Compiler oder IDE.)

    Ich habe es eben schnell selber mit folgenden Schritten unter Windows x64 mit msvc 2017 erfolgreich ausprobiert:
    1. git clone https://github.com/LuaJIT/LuaJIT.git
    2. cd LuaJIT/src
    3. msvcbuild.bat in einer msvc shell ausführen
    4. die gebaute luajit.lib als Library Abhängigkeit in deinem C/C++ Projekt einbinden und LuaJIT/src als Include Verzeichnis hinzufügen
    5. Test Code 'main.cpp':
    Code (C):
    #include <stdio.h>
    #include <lua.hpp>
    int main(int argc, char** argv) {
        lua_State* L = luaL_newstate();
        if (!L)
            return 1;
        luaL_openlibs(L);
        if (argc > 1) {
            luaL_loadfile(L, argv[1]);
            int ret = lua_pcall(L, 0, 0, 0);
            if (ret != 0) {
                fprintf(stderr, "%s\n", lua_tostring(L, -1));
                return 1;
            }
        }
        lua_getglobal(L, "test");
        printf("test: %s\n", lua_tostring(L, -1));
        lua_settop(L, 0);
        lua_close(L);
        return 0;
    }
    6. Baue dein C++ Projekt bzw. die Datei main.cpp mit dem LuaJIT/src Include Verzeichnis und LuaJIT/src Library Verzeichnis und lua51.lib als Library Abhängigkeit
    7. Kopiere LuaJIT/src/lua51.dll in das Build-Verzeichnis deiner gebauten exe Datei
    8. Erstelle eine Lua Datei, z.B. test.lua, mit Inhalt: test = 1+2+3
    9. Führe deine gebaute exe Datei aus mit Kommandozeilenargument test.lua
    10. Ausgabe: "test: 6"
     
    Zuletzt bearbeitet: 3. Juni 2018
  3. Simon Programmiert
    Simon Programmiert Neues Mitglied
    Vielen Dank, du hast mich jetzt um einen Schritt weitergebracht!
     

Die Seite wird geladen...

Lua in C++ einbinden - Ähnliche Themen

StdCall DLL in Java einbinden
StdCall DLL in Java einbinden im Forum Allgemeine Java-Themen
Über Classpath MongoDB Treiber einbinden und korrekte import Pfade
Über Classpath MongoDB Treiber einbinden und korrekte import Pfade im Forum Datenbankprogrammierung
JavaFX lässt sich nicht in Eclipse einbinden
JavaFX lässt sich nicht in Eclipse einbinden im Forum AWT, Swing, JavaFX & SWT
Album Cover in GUI einbinden
Album Cover in GUI einbinden im Forum AWT, Swing, JavaFX & SWT
HashMap und Methoden richtig einbinden
HashMap und Methoden richtig einbinden im Forum Allgemeine Java-Themen
Thema: Lua in C++ einbinden