Brauche Hilfe mit Lua in C++



  • Hallo zusammen,

    folgende Konstellation:

    code:

    #include <iostream>
    
    extern "C"
    {
        #include "lua.h"
        #include "lualib.h"
        #include "lauxlib.h"
    }
    
    int main()
    {
        std::cout << "=== Lua in C++ ===\n\n";
    
        lua_State *L = luaL_newstate();
    }
    

    das andere zeugs:

    INCLUDEPATH += "<Pfad>/include"
    
    LIBS *= -L"<Pfad>/lib" -llua52
    

    error:

    In function `main':
    undefined reference to `luaL_newstate`
    error: ld returned 1 exit status
    

    Ich brauch echt hilfe ich hab auch schon die Fehlermeldungen gegoogelt, ich hab extern "C" und so verwendet, und ich versteh nicht worans liegt hab die header, hab den lib Pfad angegeben und die lib in diesem ordner "liblua52.a" auch angegeben. Hab eigentlich alles gemacht wie bei anderen Sachen (z.B. SFML) und da hab ich auch keine Probleme...

    Hoffe jemand hat ne Idee worans bei mir scheitert (also meinem Programm)

    LG
    HarteWare



  • Kommt das -llua52 beim Compileraufruf in der Kommandozeile nach deiner Objektdatei?



  • es sieht so aus (ohne IDE schnickschnack):

    g++ -Wl -o debug\LuaTest.exe debug/main.o -L<Pfad>/lib -llua52
    


  • Wenn die Funktion in der Lib ist, siehts richtig aus.
    32/64 Bit gemischt?



  • Also mein System ist 64bit, mein compiler ist... ähm steht überall w64 also vermutl. auch 64bit und die libs sind angeblich auch 64 bit... da kommt dann meistens aber auch ne andere Fehlermeldung, wenn ich das richtig in Erinnerung habe... ka was ich da falsch mache, vielleicht funktioniert selber kompilieren

    Hab in der API doku von Lua 5.2 nachgeschaut da ist das auch drin (wird sogar von code-completion vorgeschlagen, also muss sie deklariert sein)

    Weiß nicht ob die lib falsch ist, die war halt dabei, ich habs von nem Link auf der Lua Homepage geholt



  • nm liblua52.a | grep luaL_newstate
    

    Sollte sowas wie
    T luaL_newstate
    liefern, wenn die Funktion drin ist



  • Die Funktion befindet sich laut Doku in der Auxlib. Das ist doch garantiert eine andere Lib!



  • Hallo nochmal,

    also das ist mir jetzt zu blöd geworden, ich hab mir einfach MinGW/MSYS geholt, bin da rein und hab make mingw eingegeben und der hat alles automatisch gemacht, lua.exe, liblua.a, alles dabei, hab diese Sachen verwenden und es kompiliert einwandfrei, ich geh davon aus, dass der Rest auch funktionieren wird.

    vielen Dank für deine Hilfe, hauptsache es "funzt" jetzt 👍

    LG
    HarteWare


Anmelden zum Antworten