C++ OpenGL und Linux machen Probleme
-
Hallo,
ich bin seit einer ewigkeit im Netz am Suchen und finde recht häufig Beispiele die meinem Ähneln. Bei fast allen scheints zu laufen, manchmal sogar mit völlig falschem Code, nur bei mir will es einfach nicht klappen.
Jemand ne Idee? Vielleicht?#include <X11/Xlib.h> #include <GL/glut.h> void display(void) { glClear( GL_COLOR_BUFFER_BIT); glColor3f(0.0, 1.0, 0.0); glBegin(GL_POLYGON); glVertex3f(2.0, 4.0, 0.0); glVertex3f(8.0, 4.0, 0.0); glVertex3f(8.0, 6.0, 0.0); glVertex3f(2.0, 6.0, 0.0); glEnd(); glFlush(); } int main(int argc, char ** argv) { glutInit(&argc, argv); glutInitDisplayMode ( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowPosition(100,100); glutInitWindowSize(300,300); glutCreateWindow ("square"); glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 10.0, 0.0, 10.0, -1.0, 1.0); glutDisplayFunc(display); glutMainLoop(); return 0; }
Das Ergebnis:
/tmp/cc3qKJUt.o: In function `main': OpenGL_Intro.cpp:(.text+0x8e): undefined reference to `glutInit' OpenGL_Intro.cpp:(.text+0x9a): undefined reference to `glutInitDisplayMode' OpenGL_Intro.cpp:(.text+0xae): undefined reference to `glutInitWindowPosition' OpenGL_Intro.cpp:(.text+0xc2): undefined reference to `glutInitWindowSize' OpenGL_Intro.cpp:(.text+0xce): undefined reference to `glutCreateWindow' OpenGL_Intro.cpp:(.text+0xf6): undefined reference to `glClearColor' OpenGL_Intro.cpp:(.text+0x102): undefined reference to `glMatrixMode' OpenGL_Intro.cpp:(.text+0x107): undefined reference to `glLoadIdentity' OpenGL_Intro.cpp:(.text+0x13b): undefined reference to `glOrtho' OpenGL_Intro.cpp:(.text+0x147): undefined reference to `glutDisplayFunc' OpenGL_Intro.cpp:(.text+0x14c): undefined reference to `glutMainLoop' /tmp/cc3qKJUt.o: In function `display()': OpenGL_Intro.cpp:(.text+0x16c): undefined reference to `glClear' OpenGL_Intro.cpp:(.text+0x18b): undefined reference to `glColor3f' OpenGL_Intro.cpp:(.text+0x197): undefined reference to `glBegin' OpenGL_Intro.cpp:(.text+0x1b6): undefined reference to `glVertex3f' OpenGL_Intro.cpp:(.text+0x1d5): undefined reference to `glVertex3f' OpenGL_Intro.cpp:(.text+0x1f4): undefined reference to `glVertex3f' OpenGL_Intro.cpp:(.text+0x213): undefined reference to `glVertex3f' OpenGL_Intro.cpp:(.text+0x218): undefined reference to `glEnd' OpenGL_Intro.cpp:(.text+0x21d): undefined reference to `glFlush' collect2: ld gab 1 als Ende-Status zurück
Das Problem scheint irgendwie beim Initialisieren der GL Bibliothek zu liegen, aber ich seh nicht warum...
MfG Spence
-
Du musst die passenden Libraries mitlinken
g++ bla.cpp -lGL -lGLU -lglut
-
Na da soll mal einer drauf kommen...
Danke für den Tip, hat funktioniert.
MfG Spence
-
Ist eigentlich logisch.
Für jede Funktion die du verwenden willst musst du den entsprechenden
Header einbinden in der die Deklaration dieser Funktion steht.Nun braucht dein Programm zum Laufen natürlich später auch die Implementierung
dieser Funktion und diese findet es in den entsprechenden Libraries.
Bei allen Funktionen die nicht Teil der Standard Bibliothek sind musst du
also die entsprechende Library automatisch mitlinken, sonst bekommst du
eine "undefinded reference".Bei mathematischen Funktionen aus cmath musst du sogar, obwohl es zur Standard
Bibliothek gehört, -lm zu den Linkeroptionen hinzufügen, damit die Funktionen
gefunden werden.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
was mache ich denn, wenn ich zB in eclipse eigene header und sourcedateien der übersicht halber in einen unterordner verschieben will? das klappt bei mir nich mit dem hinweis auf undefined reference... ich steh echt aufm schlauch!