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