Bonjour !
Je viens vers vous parce que j'ai de grosses difficultés de compilation pour un projet en C++ qui utilise Qt5 et OpenGL. Je compile et exécute sous Windows, grâce au logiciel QtCreator et à CMake.
Le problème est que pour certaines fonctions, la compilation me renvoie le message d'erreur suivant :
De ce que j'en comprends, il n'arrive pas à trouver la définition des fonctions MatrixMode, LoadIdentity et Frustum qui ont été appelées de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Undefined reference to `_imp__glMatrixMode@4` Camera.cpp Undefined reference to `_imp__glLoadIdentity@0` Camera.cpp Undefined reference to `_imp__glFrustum@48` Camera.cpp CMakeFiles\Project3Donut.dir/objects.a(Camera.cpp.obj):bad reloc address 0x53 in section `.text $_ZmiRK9QVector4DS1_[__ZmiRK9QVector4DS1_]` Error: ld returned 1 exit status collect2.exe
J'ai également une erreur d'une même type lorsque j'essaye d'utiliser des fonctions de la bibliothèque QtXmlPatterns.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(_xmin, _xmax, _ymin, _ymax, _zNear, _zFar);
Pour OpenGL, les fichiers devraient être trouvés grâce au CMake :
Qui ne génère aucune erreur... Si ce n'est plus tard les "undefined reference".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 FIND_PACKAGE( Qt5OpenGL REQUIRED ) IF( Qt5OpenGL_FOUND ) MESSAGE( STATUS "Qt5 OpenGL module FOUND!" ) ELSE() MESSAGE( WARNING "Qt5 OpenGL module NOT FOUND!" ) ENDIF()
A savoir que ce projet compile chez un de mes camarades qui travaille en ligne de commande (et inclut OpenGL32 dans sa compilation avec CMake de ce que j'ai compris, je ne sais pas si ça peut jouer...), mais que chez un autre camarade qui utilise également QtCreator sous Windows on retrouve la même erreur...
Pensez vous qu'il faille préciser clairement que l'on veut utiliser la bibliothèque OpenGL32 pour que ça fonctionne aussi ? Et si oui, à quel moment ?
Merci d'avance à ceux qui pourront m'aider !
Partager