IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Compilation d'un projet avec des fonctions OpenGL [2D/3D]


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut Compilation d'un projet avec des fonctions OpenGL
    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 !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 403
    Par défaut
    Rapidement (pour les details, cf le tuto "Utiliser OpenGL avec Qt 5.4" en ligne). Qt5 utilise OpenGL ES 2 en interne, avec une redirection vers DirectX9 sous Windows (projet ANGLE). Donc par defaut, seules les fonctions ES 2 sont dispo dans Qt 5 (et donc pas les fonctions d'OpenGL 1 que tu utilises - qui est vieux de plus de 15 ans). Deux solutions : linker manuellement les drivers OpenGL 1 (c'est ce que font tes camarades en incluant opengl32.dll), soit utiliser du code OpenGL a jour.

    Je te conseille bien sur de choisir la seconde solution, il est finallement assez idiot de continuer a travailler avec GL 1. Il existe pas mal de tutos sur l'utilisation d'OpenGL > 2, il y a une serie d'articles recents traduit par la rubrique Jeux par exemple.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut
    Merci beaucoup pour ta réponse. En effet un de ma camarade a regardé et c'est bien des fonctions trop anciennes...

    Pour ce qui est de QtXmlPatterns par contre je ne pense pas que ça soit le même problème si ? J'avais essayé de l'inclure dans le CMake, mais ça ne changeait pas le problème...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 403
    Par défaut
    Tu as quels messages de CMake ? Peut etre une dependance de QXmlPaterns ? (je n'utilises pas trop ce module) Essaies peut etre avec Dependencies Walker pour trouver les dependances

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut
    Désolée du temps de réponse, pour l'instant je n'ai pas retouché à QXmlPatterns mais c'était des undefined reference comme pour l'autre.

    Pour OpenGL, j'ai réussi à trouver l'équivalent à certaines fonctions en OpenGL 2, mais pour d'autres (comme par exemple glNormal3f ou glColor3f) je ne trouve pas d'équivalent...

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 403
    Par défaut
    C'est normal, il n'y a pas d'equivalent. Si ces fonctions ont ete retirees, ce n'est pas pour rien. Lis un cours OpenGL recent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/12/2006, 14h59
  2. erreur LNK2019 avec des fonctions communes.
    Par FamiDoo dans le forum Visual C++
    Réponses: 9
    Dernier message: 31/07/2006, 10h32
  3. Compilation avec des fonctions virtuel pure
    Par vanitom dans le forum C++
    Réponses: 4
    Dernier message: 16/12/2005, 14h37
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo