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 :

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
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
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(_xmin, _xmax, _ymin, _ymax, _zNear, _zFar);
J'ai également une erreur d'une même type lorsque j'essaye d'utiliser des fonctions de la bibliothèque QtXmlPatterns.

Pour OpenGL, les fichiers devraient être trouvés grâce au CMake :

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()
Qui ne génère aucune erreur... Si ce n'est plus tard les "undefined reference".
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 !