c++ Opengl fenster!



  • Hallo,
    Wenn ich mein Opengl prog. ausführe kommt diese Fehlermeldung.

    obj/Debug/main.o||In function `handleResize(int, int)':|
    /OpenGL/main.cpp|44|undefined reference to `gluPerspective'|
    obj/Debug/main.o||In function `drawScene()':|
    /OpenGL/main.cpp|87|undefined reference to `glutSwapBuffers'|
    obj/Debug/main.o||In function `main':|
    /OpenGL/main.cpp|92|undefined reference to `glutInit'|
    /OpenGL/main.cpp|93|undefined reference to `glutInitDisplayMode'|
    /OpenGL/main.cpp|94|undefined reference to `glutInitWindowSize'|
    /OpenGL/main.cpp|97|undefined reference to `glutCreateWindow'|
    /OpenGL/main.cpp|101|undefined reference to `glutDisplayFunc'|
    /OpenGL/main.cpp|102|undefined reference to `glutKeyboardFunc'|
    /OpenGL/main.cpp|103|undefined reference to `glutReshapeFunc'|
    /OpenGL/main.cpp|105|undefined reference to `glutMainLoop'|
    

    Diese Fehler meldung kommt bei Codeblocks ich hab als headerdatei.
    #include <GL/glut.h>
    Wenn ich dies mit make ausführe und in mein Makefile des steht.

    LIBS = -lglut -lGLU
    

    dann geht das.
    Muss ich irgendeine andere Headerdatei dazu adden.

    Grüsse



  • Headerdateien deklarieren üblicherweise nur. (Insbesondere C Headerdateien.) Du hast aber eine "undefined reference", also etwas was deklariert, aber nicht definiert ist. Also nein, dir fehlen keine #includes, sondern du musst glut auch linken, damit der Compiler nicht nur weiß wie die Funktionen aussehen, sondern auch was sie machen.



  • Tausend dank!
    Hab jetzt einfach :
    ../../../usr/lib/i386-linux-gnu/libGLU.so
    ../../../usr/lib/libglut.so

    dazu gelinkt.
    Project->Build Opt.->Linker Settings;

    und dort dazu adden.

    Grüsse


  • Mod

    Das hoert sich eher so an, als waere falsche Linkreihenfolge das Problem gewesen, denn libglut und libGLU hast du bei obigem Makefile schon dazu gelinkt und die undefinierten Funktionen klingen vom Namen her so, als waeren sie aus der libglut.



  • GLUT und C++ vertragen sich übrigens nicht gut miteinander.



  • 314159265358979 schrieb:

    GLUT und C++ vertragen sich übrigens nicht gut miteinander.

    gibts dazu auch ne begründung?



  • Um GLUT eine Memberfunktion als Handler "übergeben" zu können müsste man das ganze über globalen State lösen, was nicht besonders elegant ist. GLUT ist eben eine C-Library, das kennt keine Memberfunktionen.



  • was soll ich sonst verwenden?



  • firefly schrieb:

    314159265358979 schrieb:

    GLUT und C++ vertragen sich übrigens nicht gut miteinander.

    gibts dazu auch ne begründung?

    Beispiel: GLUT verwendet exit(), das sagt eigentlich eh schon alles 😉



  • was soll ich statt dessen verwenden.



  • SFML, z.B.


Anmelden zum Antworten