linkerprobleme mit devc++ bei der benutzung von grafikbibliotheken



  • Hi,

    ich benutze seit kurzem den devc++ 4.9.9.0 compiler und seine entwicklungsumgebung. Nun möchte ich gerne grafikbibliotheken(opengl) verwenden. Dazu habe ich die libs(glut.lib, glaux.lib, glu32.lib, glut32.lib) und die header-dateien(glut.h, glu.h, glaux.h, gl.h) in die entsprechenden ordner von devc++ kopiert. Dann habe ich noch unter den projektoptionen unter parameter die bibliotheken der linkerliste hinzugefühgt.
    Verwende ich jetzt allerdings entsprechende grafikfunktionen die unten aufgelisteten linkerfehler auf.

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #include <GL/glut.h>
    #include <GL/glu.h>
    #include <GL/glaux.h>
    #include <GL/gl.h>
    
    using namespace std;
    
    bool InitGL()
    {
    int width = 800;
    int height = 600;
    
    							     glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
    
            gluPerspective( 45.0f, (GLfloat) width / (GLfloat) height, 1.0f, 1000.0f);
    
        glMatrixMode( GL_MODELVIEW );
        glLoadIdentity();
    
        glEnable(GL_TEXTURE_2D);
        glShadeModel(GL_SMOOTH);
        glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
        glClearDepth(1.0f);
        glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LEQUAL);
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
        return true;
    }
    

    Linkerfehler:

    [Linker error] undefined reference to glMatrixMode@4' [Linker error] undefined reference toglLoadIdentity@0'
    [Linker error] undefined reference to gluPerspective@32' [Linker error] undefined reference toglMatrixMode@4'
    [Linker error] undefined reference to `glLoadIdentity@0'
    //etc...
    C:\Programme\Dev-Cpp\Eigene Projekte\Makefile.win [Build Error] [Projekt1.exe] Error 1

    Was muss ich machen um diese fehler zu beheben?

    Gruß crabbe



  • [edit] war mist, nicht richtig gelesen [/edit]



  • Steht in den Linkeroptionen wirklich -lOpenGL32 ?



  • Die Referenzen zu den Symbolen sollten aufgelöst werden.

    Bye, TGGC (Dem beste BdT)



  • Könnte mich irren aber hat opengl nicht ein c api ?
    Du compilierst aber c++.
    wenn dem so ist sollte

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    
    extern "C" {
      #include <GL/glut.h>
      #include <GL/glu.h>
      #include <GL/glaux.h>
      #include <GL/gl.h>
    }
    
    using namespace std;
    ....
    

    Abhilfe schaffen
    Kurt



  • @zuk
    ist nicht nötig das die header schon entsprechend darauf reagieren wenn sie
    von cpp dateien includiert werden.

    die antwort hat doch YASC schon gegeben. die lib müssen hinzu gelinkt werden.



  • Hi,

    YASC schrieb:

    Steht in den Linkeroptionen wirklich -lOpenGL32 ?

    ja, ich bin bei den projektoptionen auf "Bibliothek/Objekt hinzufühgen" gegangen und habe die entsprechenden libs(auch opengl32.lib) der linkerliste hinzugefühgt.

    miller_m schrieb:

    die lib müssen hinzu gelinkt werden.

    Das habe ich doch schon gemacht oder muss ich dies direkt im code tun?(kann ich mir nicht vorstellen)

    Gruß Crabbe



  • öhm.. kommt der mingw wirklich mit dem .lib-format klar? bei meiner installation gibts nur .a (also archieve mit mehreren .o drin). des weiteren scheint DevC++ nicht so ganz damit klar zu kommen (war mein eindruck beim testen), wenn man die libs in die liste einfügt. normalerweise mache ich das über die zusätzlichen kommandozeilenparameter ( also mit -lmeinetollelib)
    geloescht 🙄

    PS: beim installieren von zusätzlichen libs bei DevC++ bevorzuge ich, DevPacks zu benutzen. Die sind sehr komfortabel, wenn auch oft nicht in der neuesten Version zu bekommen. Ein paar kriegt man über das integrierte Updatetool.



  • Crabbe schrieb:

    miller_m schrieb:

    die lib müssen hinzu gelinkt werden.

    Das habe ich doch schon gemacht

    Entweder du lügst, oder die Libs definieren die geforderten Symbole nicht.

    Bye, TGGC (Dem beste BdT)



  • geloescht schrieb:

    öhm.. kommt der mingw wirklich mit dem .lib-format klar? bei meiner installation gibts nur .a (also archieve mit mehreren .o drin). des weiteren scheint DevC++ nicht so ganz damit klar zu kommen (war mein eindruck beim testen), wenn man die libs in die liste einfügt.

    geht schon mit den entsprechenden header und ein paar zusatz export angaben
    beim erstellen der lib. vermute aber mal das dieses nicht gemacht wurde.

    @crabbe
    ich würde die libs und die header löschen die du kopiert hast und die bestehenden von mingw benutzen.
    sprich wie schon ein paar mal gesagt
    -lopemgl32
    -lglu32
    usw usw
    und benutz generell libs und header die für deinen compiler sind bzw. schon dabei sind.



  • ok hab jetzt die passenden libs für den compiler heruntergeladen und es funktioniert einwandfrei. Danke noch einmal für eure antworten.

    Gruß Crabbe


Anmelden zum Antworten