Problem: Library in Code::Blocks kompilieren und in Projekt linken



  • Da ich ein kleines Tutorial zu OpenGL mit GLUT durcharbeite und dazu in vielen Files den gleichen Code hatte, dachte ich mir, dass ich mir einfach eine Klasse schreibe, die das Windowmanaging uebernimmt und sich leicht bedienen laesst. Den "Windowmanager" habe ich dann unter Code::Blocks (v8.02, Win7) in eine Library namens libglutwm32.a kompiliert. Das funktionierte Problemlos, auch wenn ich ein kleines ausfuehrbares Testfile kompiliere, die den WM benutzt, haut das hin.

    Jetzt versuchte ich die Lib in einem anderen Projekt einzubinden und habe sie dem Linker hinzugefuegt. Dann noch den Header eingebunden (den ich ins GL-Verzeichnis kopiert habe) und versucht zu kompilieren. Leider erhalte ich hier einen Haufen von Fehlern:

    ||=== test, Release ===|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x17)||undefined reference to ___glutInitWithExit@12'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x2e)||undefined reference to_glClear@4'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x64)||undefined reference to _glViewport@16'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x73)||undefined reference to_glMatrixMode@4'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x7b)||undefined reference to _glLoadIdentity@0'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0xa5)||undefined reference to_gluOrtho2D@32'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x1f1)||undefined reference to _glutInitDisplayMode@4'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x206)||undefined reference to_glutInitWindowSize@8'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x21b)||undefined reference to _glutInitWindowPosition@8'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x234)||undefined reference to___glutCreateWindowWithExit@8'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x261)||undefined reference to _glutDisplayFunc@4'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x278)||undefined reference to_glutDisplayFunc@4'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x2a1)||undefined reference to _glutReshapeFunc@4'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x2b8)||undefined reference to_glutReshapeFunc@4'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x2e1)||undefined reference to _glutKeyboardFunc@4'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x2f8)||undefined reference to_glutKeyboardFunc@4'|
    D:\Programme\CodeBlocks\MinGW\lib\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x363)||undefined reference to _glutMainLoop@0'| D:\\Programme\\CodeBlocks\\MinGW\\lib\\libglutwm32.a(windowmanager.o):windowmanager.cpp:(.text+0x37)||undefined reference to_glutSwapBuffers@0'|
    ||=== Build finished: 18 errors, 0 warnings ===|

    Ich finde keine gute Erklaerung fuer diese Fehler. Ich habe gl.h und glut.h eingebunden, sowie das Programm gegen opengl32, gdi32, glu32, glut32 und eben glutwm32 gelinkt. Kann mir jemand helfen?



  • Okay, ich habe das Problem geloest... Es funktioniert erst, wenn ich meine selbsterstellte Lib als erstes in die Linker-Liste eintrage - zuerst hatte ich sie immer am Ende stehen. Jetzt fehlt mir nur eine Erklaerung, warum zur Hoelle die Reihenfolge wichtig ist. oO


Anmelden zum Antworten