Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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
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).
(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':
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"