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

OpenGL Discussion :

[CodeBlocks] undefined referente to gl


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut [CodeBlocks] undefined referente to gl
    Bonsoir/Bonjour,


    Je suis actuellement en train de suivre un cours sur l'utilisation de la sdl avec opengl. L'exercice était d'apprendre à faire un triangle, voici le code:

    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
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    #ifdef WIN32
    #include <GL/glew.h>
     
    #else
    #define GL3_PROTOTYPES 1
    #include <GL3/gl3.h>
     
    #endif
     
    #include <SDL2/SDL.h>
    #include <iostream>
     
     
    int main(int argc, char **argv)
    {
        // Notre fenêtre
     
        SDL_Window* fenetre(0);
        SDL_GLContext contexteOpenGL(0);
     
        SDL_Event evenements;
        bool terminer(false);
     
     
        // Initialisation de la SDL
     
        if(SDL_Init(SDL_INIT_VIDEO) < 0)
        {
            std::cout << "Erreur lors de l'initialisation de la SDL : " << SDL_GetError() << std::endl;
            SDL_Quit();
     
            return -1;
        }
     
     
        // Version d'OpenGL
     
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
     
     
        // Double Buffer
     
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
     
     
        // Création de la fenêtre
     
        fenetre = SDL_CreateWindow("Test SDL 2.0", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL);
     
        if(fenetre == 0)
        {
            std::cout << "Erreur lors de la creation de la fenetre : " << SDL_GetError() << std::endl;
            SDL_Quit();
     
            return -1;
        }
     
     
        // Création du contexte OpenGL
     
        contexteOpenGL = SDL_GL_CreateContext(fenetre);
     
        if(contexteOpenGL == 0)
        {
            std::cout << SDL_GetError() << std::endl;
            SDL_DestroyWindow(fenetre);
            SDL_Quit();
     
            return -1;
        }
     
     
        #ifdef WIN32
     
            // On initialise GLEW
     
            GLenum initialisationGLEW( glewInit() );
     
     
            // Si l'initialisation a échouée :
     
            if(initialisationGLEW != GLEW_OK)
            {
                // On affiche l'erreur grâce à la fonction : glewGetErrorString(GLenum code)
     
                std::cout << "Erreur d'initialisation de GLEW : " << glewGetErrorString(initialisationGLEW) << std::endl;
     
     
                // On quitte la SDL
     
                SDL_GL_DeleteContext(contexteOpenGL);
                SDL_DestroyWindow(fenetre);
                SDL_Quit();
     
                return -1;
            }
     
        #endif
     
     
        // Vertices et coordonnées
     
        float vertices[] = {-0.5, -0.5,   0.0, 0.5,   0.5, -0.5};
     
     
        // Boucle principale
     
        while(!terminer)
        {
            // Gestion des évènements
     
            SDL_WaitEvent(&evenements);
     
            if(evenements.window.event == SDL_WINDOWEVENT_CLOSE)
                terminer = true;
     
     
            // Nettoyage de l'écran
     
            glClear(GL_COLOR_BUFFER_BIT);
     
     
            // On remplie puis on active le tableau Vertex Attrib 0
     
            glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
            glEnableVertexAttribArray(0);
     
     
            // On affiche le triangle
     
            glDrawArrays(GL_TRIANGLES, 0, 3);
     
     
            // On désactive le tableau Vertex Attrib puisque l'on n'en a plus besoin
     
            glDisableVertexAttribArray(0);
     
     
            // Actualisation de la fenêtre
     
            SDL_GL_SwapWindow(fenetre);
        }
     
     
        // On quitte la SDL
     
        SDL_GL_DeleteContext(contexteOpenGL);
        SDL_DestroyWindow(fenetre);
        SDL_Quit();
     
        return 0;
    }
    J'obtiens les erreurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ||=== Tuto, Debug ===|
    obj\Debug\main.o||In function `SDL_main':|
    C:\Users\PC-HP\Desktop\OpenGL\Tuto\main.cpp|122|undefined reference to `glClear@4'|
    C:\Users\PC-HP\Desktop\OpenGL\Tuto\main.cpp|133|undefined reference to `glDrawArrays@12'|
    ||=== Build finished: 2 errors, 0 warnings (0 minutes, 2 seconds) ===|
    J'ai bien mis les .dll dans le dossier ou se trouve mon cpp et mon executable, et j'ai également "linké" les lib (.a).

    Je tiens également à préciser que je ne comprends pas l'intégralité du code (notamment les #ifdef que je n'avais jamais vu auparavant)

    Merci d'avance de l'aide !

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 050
    Par défaut
    Bonjour,

    As-tu link les librairies adéquates? Il semble qu'il te manque le link d'un lib, glew ou sdl ( je n'ai jamais utilisé ni l'un ni l'autre)

  3. #3
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Il me semble que oui:


  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    C:\Users\PC-HP\Desktop\OpenGL\Tuto\main.cpp|122|undefined reference to `glClear@4'|
    C:\Users\PC-HP\Desktop\OpenGL\Tuto\main.cpp|133|undefined reference to `glDrawArrays@12'|
    Ceci un probleme de link OpenGL et vu ton screen tu ne l'a pas lié OpenGL.

    Sinon ce n'est pas comme cela qu'on link 'proprement' , soit on écrit dans other link option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -lglew32 -lSDL2
    //avec opengl et glu
    -lopengl32 -lglu32
    Soit dans Link librairie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SDL2
    glew32
    opengl32
    glu32
    Le #ifdef comme le design si y a le define alors i lis le code sinon non , c'est utile si on utilie du code particulier pour un OS par exemple , ou pour les .h.

  5. #5
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Merci beaucoup, ce n'était pas précisé dans le tutoriel que je suis, déjà que je suis assez largué lol. Merci, bonne soirée !

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 145
    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 145
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Si je puis me permettre, ce tutoriel explique une configuration propre d'un projet SDL 2.
    De plus, il propose des templates prêt à l'emploi (pour la SDL 2, pas pour OpenGL). Vous pouvez trouver d'autres templates ici : http://jeux.developpez.com/telecharg.../709/Templates.

    Il suffira d'ajouter les indications de Kannagi.
    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.

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/09/2014, 15h28
  2. undefined reference CodeBlocks
    Par chelsea45 dans le forum Ogre
    Réponses: 9
    Dernier message: 26/03/2014, 17h01
  3. erreur codeBlocks : undefined reference
    Par momo_oca dans le forum C++
    Réponses: 9
    Dernier message: 18/02/2013, 15h01
  4. problème d'undefined reference avec codeblocks
    Par matstriker dans le forum C
    Réponses: 4
    Dernier message: 20/04/2011, 13h26
  5. Réponses: 2
    Dernier message: 02/05/2008, 09h11

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