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

C++ Discussion :

Utilisation de namespace et include d'openGL


Sujet :

C++

  1. #1
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut Utilisation de namespace et include d'openGL
    Bonjour à tou(te)s,

    Je tente d'utiliser un namespace, et tout se passe bien jusqu'à la mise en place grpahismes openGL. Plus rien ne compile et il me sort des erreurs bizarres.
    Au début, j'avais mis les include dans le namespace et, ok, c'était idiot , mais là, je ne comprends pas. A mois qu'openGL utilise déjà le namespace gj ???

    Voilà le bout de 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
    #include <gl/gl.h>
    #include <gl/glaux.h>
    #include "gui_button.hpp"
     
    namespace jg
    {
     
    void GUI_Button::DrawObject (sf::RenderWindow& App)
    {
        sf::IntRect r(100, 100, 200, 200);
        sf::Sprite s;
     
        glEnable (GL_SCISSOR_TEST);
        // En bas à gauche, puis la largeur et la hauteur !!!
        glScissor(r.Left, App.GetHeight() - r.Bottom, r.GetWidth(), r.GetHeight());
     
        s.SetColor (sf::Color(255, 0, 255, 255));
        s.SetPosition (125, 170);
        s.SetSubRect (sf::IntRect(0, 0, 50, 10));
        App.Draw (s);
     
        glDisable (GL_SCISSOR_TEST);
    }
     
    } // namespace jg
    Et les erreurs :
    ..\..\libs externes\include\gl\gl.h:1152: error: expected constructor, destructor, or type conversion before "void"
    ..\..\libs externes\include\gl\gl.h:1152: error: expected `,' or `;' before "void"
    ..\..\libs externes\include\gl\gl.h:1153: error: expected constructor, destructor, or type conversion before "void"
    ..\..\libs externes\include\gl\gl.h:1153: error: expected `,' or `;' before "void"
    ..\..\libs externes\include\gl\gl.h:1154: error: `WINGDIAPI' does not name a type
    [bla bla bla]
    :: === Build finished: 50 errors, 0 warnings ===
    Mindiell
    "Souvent, femme barrit" - Elephant man

  2. #2
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Moi aussi j'ai déjà eu ce problème mais je ne me souviens vraiment pas comment j'ai fait

    Juste pour voir ce que ça donne, essayes "using namespace" au lieu de "namespace{}"

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Peut être qu'en postant dans le forum OpenGL, tu auras plus de réponses.

    Est ce que je déplace ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Euh, je pense qu'il s'agit d'un problème de namespace et donc de C++, non ?
    si personne ne répond ou ne peut répondre, je le fermerai et j'irai voir ailleurs (openGL)
    Mindiell
    "Souvent, femme barrit" - Elephant man

  5. #5
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    essay using namespace jg;
    If you type Google into Google, you Can break the internet" - The IT Crowd

  6. #6
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Nop, ca ne change rien...
    En même temps, je veux vraiment définir ma classe et son code (hpp et cpp) dans le namespace jg hein
    Mindiell
    "Souvent, femme barrit" - Elephant man

  7. #7
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Citation Envoyé par Mindiell Voir le message
    A mois qu'openGL utilise déjà le namespace gj ???
    Non, c'est une bibliothèque C, il n'y avait pas de namespace, c'est pour ça que tu trouves un tas de suffixe (gl, glut, etc.) devant les fonctions de bibliothèques C. En C++ les namespaces sont justement venu palier ce problème de portée.

    Par curiosité, tu utilises aussi glut ?

    Sinon, je vois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <gl/gl.h>
    #include <gl/glaux.h>
    #include "gui_button.hpp"
    Pourquoi tu les inclus dans le .cpp et pas dans le .hpp ? Je ne sais pas si c'est ça, mais peut-être que quelque part tu inclus "gui_button.hpp", mais pas les gl.h et glaux.h dont il a besoin ?

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    L'erreur est sur un WINAPI non ? Sous Windows il faut inclure windows.h avant gl.h.

  9. #9
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Excellent !

    Noxen> Je n'en ai pas besoin dans le .h, je souhaite simplement utiliser des fonctions openGL lors du Draw. Mon objet n'utilise pas du tout openGL sinon.

    Laurent> C'est surement ca, quand j'ai utilisé opengl avant, j'incluais juste avant <SFML/Graphics.hpp> (de la SFML pour les ignorants ). Hors, là, j'inclus le graphics dans mon objet (qui utilise des types SFML). Et j'ai l'habitude d'inclure les <> toujours avant mes propres include "" !
    En inversant ces includes (mon "button.hpp" en premier) : ca fonctionne nickel !
    Mindiell
    "Souvent, femme barrit" - Elephant man

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Essaie extern "C" { } autour de tes includes. Sinon, les déclarations seront prises pour des ressources C++ et tu risques d'avoir des difficultés à l'édition des liens.

  11. #11
    screetch
    Invité(e)
    Par défaut
    c'est plutot a la bibliotheque externe de faire ca, pas a l'utilisateur.

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Citation Envoyé par screetch Voir le message
    c'est plutot a la bibliotheque externe de faire ca, pas a l'utilisateur.
    Non, la bibliothèque externe a été écrite en C. Ce n'est pas à elle de faire de la compatibilité « descendante » ...

  13. #13
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Oui je pense aussi que c'est extern C qui manque, récemment en me remettant a lua j'arrêtais pas de retomber exactement sur la même erreur et a chaque fois je me rappelais qu'une heure plus tard que c'était extern C qui manquait... *se tappe le front*

  14. #14
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Vous n'avez pas vu? C'est déjà résolu

    Et ce n'est pas extern "C"{} mais comme Laurent l'a dit, c'est l'include de windows.h qu'il faut faire avant gl.h, maintenant, je me souviens que c'était aussi mon problème quand j'ai eu la même erreur.

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

Discussions similaires

  1. [XSLT][XPath] XML utilisant plusieurs namespace
    Par darkangelvador dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/04/2010, 21h46
  2. problème d'utilisation de namespace
    Par modafine dans le forum C++
    Réponses: 1
    Dernier message: 22/04/2009, 20h55
  3. utilisation de visual c++ express et opengl
    Par skerdreux dans le forum Visual C++
    Réponses: 3
    Dernier message: 29/07/2008, 09h36
  4. Utiliser les Namespace pour appeler des fonctions
    Par Flamby38 dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/01/2008, 17h27
  5. probleme dans l'utilisation de la fonction include
    Par cortex007 dans le forum Langage
    Réponses: 7
    Dernier message: 27/01/2006, 17h37

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