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 :

Problème d'édition des liens avec glew [2D/3D]


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2012
    Messages : 1
    Par défaut Problème d'édition des liens avec glew
    Bonjour.


    Comme dit dans le titre, j'ai un problème au moment du linkage avec glew.
    Voici mon code ainsi que les erreurs.

    Fichier : gldisplay.h
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #ifndef GLDISPLAY_H
    #define GLDISPLAY_H
     
    /* includes Glew */
    #ifdef WIN32
    #include <GL/glew.h>
    #else
    #define GL3_PROTOTYPES 1
    #include <GL3/gl3.h>
    #endif
     
    /* includes OpenGL */
    #include <GL/gl.h>
     
    /* includes Qt - OpenGL */
    #include <QGLFormat>
    #include <QGLContext>
    #include <QGLWidget>
     
    class GLDisplay : public QGLWidget
    {
        Q_OBJECT
     
        public:
            GLDisplay(QWidget *parent = 0);
     
        protected:
            void initializeGL();
            void resizeGL(int w, int h);
            void paintGL();
     
        signals:
     
        public slots:
     
    };
     
    #endif // GLDISPLAY_H

    Fichier : gldisplay.cpp
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include "gldisplay.h"
     
    #include <iostream>
     
    GLDisplay::GLDisplay(QWidget *parent)
    {
        QGLFormat *formatGL = new QGLFormat;
        formatGL->setVersion(3, 1); // Version : 3.1
        formatGL->setDoubleBuffer(true);
        formatGL->setDepthBufferSize(24);
        formatGL->setSwapInterval(1);
     
        QGLContext *contextGL = new QGLContext(*formatGL);
        contextGL->create(contextGL);
     
        QGLWidget(contextGL, parent);
    }
     
     
    void GLDisplay::initializeGL()
    {
        #ifdef WIN32
        GLenum initialisationGLEW = glewInit();
     
        if(initialisationGLEW != GLEW_OK)
        {
            std::cerr << "Erreur d'initialisation de GLEW : " << glewGetErrorString(initialisationGLEW) << std::endl;
            Q_ASSERT(initialisationGLEW != GLEW_OK);
        }
        #endif
     
    }
     
    void GLDisplay::resizeGL(int w, int h)
    {
     
    }
     
    void GLDisplay::paintGL()
    {
        glClear(GL_COLOR_BUFFER_BIT);
        float vertices[] = {-0.5, -0.5,   0.0, 0.5,   0.5, -0.5}; // Ecriture des coordonnés dans un tableau
        glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices); // Envoie des coordonnés dans un tableau
        glEnableVertexAttribArray(0); // Activation du tableau "0" (coordonnés)
        glDrawArrays(GL_TRIANGLES, 0, 3); // Affichage du triangle
        glDisableVertexAttribArray(0); // Désactivation du tableau "0"
    }

    Fichier : 4DViewer.pro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SOURCES += \
        main.cpp \
        4DViewer.cpp \
        MainWindow.cpp \
        gldisplay.cpp
     
    HEADERS += \
        4DViewer.h \
        MainWindow.h \
        gldisplay.h \
        constants.h
     
    FORMS +=
     
    QT += opengl
     
    LIBS += C:/QtSDK/mingw/lib/glew32.lib
    INCLUDEPATH = QMAKE_INCDIR_OPENGL

    Erreurs :
    • undefined reference to `_imp____glewVertexAttribPointer'
    • undefined reference to `_imp____glewEnableVertexAttribArray'
    • undefined reference to `_imp____glewDisableVertexAttribArray'

    Les lignes provoquant ces erreurs sont les ligne 43, 44 et 46 du fichier "gldisplay.cpp"


    Informations supplémentaires :
    Je compile sous windows 7 64 bit savec Qt Creator (2.4.1) basé sur Qt 4.7.4 (32 bits) et la dernière version de glew (1.9.0 en 32 bit)


    J'ai cherché des heures durant sur internet pour savoir qu'est-ce qui cloche mais rien à faire je trouve pas

    Merci de me venir en aide (pitié )


    Edit : J'ai ENFIN trouvé d'où venait l'erreur .
    Elle ne viens pas du code mais du .lib que j'utilisais. En effet j'ai téléchargé glew ici cependant elle n'est pas compilée pour mingw (que j'utilise via Qt Creator). J'ai donc dû la recompiler et ça marche nikel
    J'avais aussi oublié de lier quelques lib...

    Voici mon nouveau .pro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SOURCES += \
        main.cpp \
        4DViewer.cpp \
        MainWindow.cpp \
        gldisplay.cpp
     
    HEADERS += \
        4DViewer.h \
        MainWindow.h \
        gldisplay.h \
        constants.h
     
    FORMS +=
     
    QT += opengl
     
    LIBS += C:/QtSDK/mingw/lib/libglew.a
    LIBS += C:/QtSDK/mingw/lib/libopengl32.a
    LIBS += C:/QtSDK/mingw/lib/libglu32.a
     
    INCLUDEPATH = QMAKE_INCDIR_OPENGL
    PS : il faut aussi faire un #define GLEW_STATIC avant l'inclure glew.h si on lie la bibliothèque de manière statique.

    PPS : Désolé du post mais j'avais vraiment cherché longtemps avant de l'écrire. J'espère tout de même qu'il pourra servir à des personnes rencontrant le même problème que moi.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Je me demandais d'une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef WIN32
        GLenum initialisationGLEW = glewInit();
     
        if(initialisationGLEW != GLEW_OK)
        {
            std::cerr << "Erreur d'initialisation de GLEW : " << glewGetErrorString(initialisationGLEW) << std::endl;
            Q_ASSERT(initialisationGLEW != GLEW_OK);
        }
        #endif
    Pourquoi seulement GLEW sous Windows
    Si vous utilisez GLEW, vous pouvez toujours compiler ce code aussi sous Linux et ainsi avoir un code commun pour les différentes plateformes.

    De plus, Qt dans son module OpenGL possède tout ce qu'il faut pour gérer les buffers et les shaders et même un peu plus. Du coup, je ne vois pas pourquoi vous utilisez GLEW, sachant que :
    • Qt donne une surcouche à OpenGL assez sympathique ;
    • le travail réalisé par GLEW est fait en interne de Qt pour sa surcouche.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/03/2011, 16h11
  2. problème d'édition des liens avec Qt
    Par awtuw dans le forum Qt
    Réponses: 1
    Dernier message: 08/07/2010, 21h20
  3. Problème d'édition des liens avec VC6
    Par nina_geej dans le forum wxWidgets
    Réponses: 11
    Dernier message: 18/03/2009, 16h34
  4. Problème à l'édition des liens avec wxPlotCtrl
    Par _MattU_ dans le forum wxWidgets
    Réponses: 2
    Dernier message: 12/03/2009, 08h40
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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