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. Vielleicht hilft dir diese Seite hier weiter (Klick!)
  3. 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
  4. Simon Programmiert
    Simon Programmiert Neues Mitglied
    Vielen Dank, du hast mich jetzt um einen Schritt weitergebracht!
     
  5. Hinweis: Du möchtest Java lernen? Vielleicht hilft dir dieses Training hier weiter. Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!
Die Seite wird geladen...

Lua in C++ einbinden - Ähnliche Themen

Kontaktformular auf externer Webseite einbinden?
Kontaktformular auf externer Webseite einbinden? im Forum HTML / CSS / JScript / AJAX
Erstes kleines Spieleprojekt - Java GUI in HTML einbinden
Erstes kleines Spieleprojekt - Java GUI in HTML einbinden im Forum Java Basics - Anfänger-Themen
CSV in Java einbinden und Rechnung
CSV in Java einbinden und Rechnung im Forum Datenbankprogrammierung
Grafik in CSV einbinden
Grafik in CSV einbinden im Forum Java Basics - Anfänger-Themen
Sound-Datei einbinden
Sound-Datei einbinden im Forum Java Basics - Anfänger-Themen
Thema: Lua in C++ einbinden

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. lua in c