Compilation et linkage issue
Bonjour,
Je créé une librairie d'objets "MaLib" (avec Dev-C++). L'un de ces objets est une classe Window qui contient une méthode "reshape" dans laquelle j'appelle notamment glViewport(...), glLoadIdentity(...), glOrtho(...). La compilation de cette librairie est effectuée sans problème (les librairies glu, glut, opengl, etc. sont ajoutées comme option de compilation).
Je crée ensuite un projet dans lequel j'utilise cette classe et la méthode reshape. A nouveau, j'ajoute les librairies glu, glut, opengl, etc. ainsi que ma librairie comme option de compilation. Et là, j'obtiens les message:
Citation:
Linker Error:
undefined reference to `glViewport@16' in Window.cpp
undefined reference to `glOrtho@48' in Window cpp
>> première question: pourquoi dans ce cas aucune erreur n'apparait à la compilation de Window?
Après avoir pas mal cherché (et pas trouvé), j'ai eu l'idée d'ajouter directement les fichier Window.h et Window.cpp à mon projet (sans rien changer aux options de compilation). Et là, miracle, plus d'erreurs !
Je pense que l'erreur doit venir des options de compilations mais tout me semble correctement défini ... une idée ?
En vous remerciant par avance,
Christian
L'ordre des libraries semble avoir une importance
Florian,
Merci pour la réponse détaillée. Après plusieurs essais, je suis arrivé à la conclusion que l'ordre dans lequel on indique les librairies semble avoir une importance. Lorsque je mets MaLib en haut du panier, ça fonctionne. Lorsqu'elle est en bas de la liste, ça ne fonctionne pas. Peut-être s'agit-il d'un problème de Dev-CPP.
OK:
g++.exe glutBezierClass.o -o "BezierClass.exe" -L"C:/Dev-Cpp/lib" ../Christian/lib/myTools.a ../lib/libopenglut.a ../lib/libglu32.a ../lib/libglut32.a ../lib/libopengl32.a -mwindows
Pas OK:
g++.exe glutBezierClass.o -o "BezierClass.exe" -L"C:/Dev-Cpp/lib" ../lib/libopenglut.a ../lib/libglu32.a ../lib/libglut32.a ../lib/libopengl32.a ../Christian/lib/myTools.a -mwindows
[erreur: undefined reference to `glViewport@16']
Cordialement,
Christian