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

SDL Discussion :

Problème pour inclure ma propre classe


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Problème pour inclure ma propre classe
    Bonjour ! j'ai programmez une classe qui me permet d'avoir directement une fenetre en SDL en tapant dans main() :

    AfficherFenetre fenetre;

    Le problème c'est que quand je créer un autre projet pour l'utiliser je rajoute donc #include "AfficherFenetre.h" mais cela ne fonctionne plus.

    Y a t-il quelque chose de précis à faire, j'ai pourtant bien mis ma déclaration dans un fichier.h et inclus dans le nouveau projet.

    Ou est l'erreur ?



    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
    #ifndef OUVRIRFENETRE_H
    #define OUVRIRFENETRE_H
     
    #include <SDL/SDL.h>
    #include <stdlib.h>
    #include <stdio.h>
     
    class AfficherFenetre
    {
           public:
    	AfficherFenetre( char *titre = "Application" , int largeur = 640, int hauteur = 480, bool pleinEcran = false, bool curseur = true );
    	~AfficherFenetre();
    	int pause( SDL_Surface &ecran);
     
     
           private:
    	SDL_Surface *ecran;
    	SDL_Event event; // Pour les évènements
    	bool continuer;	   
     
    };
     
    #endif

    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
    #include "AfficherFenetre.h"
     
     
    AfficherFenetre::AfficherFenetre( char *titre, int largeur, int hauteur, bool pleinEcran, bool curseur )
    {
         SDL_Surface *ecran = 0;  
         bool continuer = true;
     
     
    	 SDL_Init ( SDL_INIT_EVERYTHING ); // Initialise le mode video.
     
    	 ecran = SDL_SetVideoMode( largeur, hauteur, 32, SDL_HWSURFACE | SDL_DOUBLEBUF ); // Taille
    	 SDL_WM_SetCaption( titre , NULL ); // Rajoute un titre
     
    	 SDL_FillRect( ecran, NULL, SDL_MapRGB( ecran->format, 255, 255, 255 ));
     
    	 if( pleinEcran == true ) // Si l'utilisateur décide de mettre true, on active le plein écran
    		 ecran = SDL_SetVideoMode( largeur, hauteur, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN );
     
    	 if( curseur == false ) // Si l'utilisateur décide de mettre false, on désactive le curseur de la souris
    		 SDL_ShowCursor( SDL_DISABLE );
     
    	 pause( *ecran );
     
    }
     
    AfficherFenetre::~AfficherFenetre()
    {
     
         SDL_Quit(); // Ferme la SDL
     
    }
     
     
    int AfficherFenetre::pause(SDL_Surface &ecran)
    {
     
     
     
      while(continuer)
      {
         SDL_WaitEvent(&event);
         switch(event.type)
         {
               case SDL_QUIT:
                       continuer = false;
                       break;
               case SDL_KEYDOWN: // Si une touche est enfoncée
                    switch (event.key.keysym.sym ) // On récupère la touche
                    {
                            case SDLK_ESCAPE: // Si c'est la touche ECHAP
                                    continuer = false;
                                    break;
     
                    }
         }
     
         SDL_Flip(&ecran); // Mise à jour de l'écran
     
     
    }
     
     
        SDL_FreeSurface( &ecran );
         return EXIT_SUCCESS;
    }

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Citation Envoyé par windjim Voir le message
    Ou est l'erreur ?
    Je te retourne la question ....

    Sans plaisanterie ... quel est ton message d'erreur ? Problème de compilation ? a l'exécution ?
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Après compilation voilà ce que visual c++ express me donne :

    'jeu test.exe' : Chargé 'C:\Users\Nicolas\Documents\Projet c++ en cours\jeu test\debug\jeu test.exe', Les symboles ont été chargés.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\ntdll.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\kernel32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\winsxs\x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.762_none_24c8a196583ff03b\msvcr80d.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\msvcrt.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\Users\Nicolas\Documents\Projet c++ en cours\jeu test\jeu test\SDL.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\advapi32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\rpcrt4.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\gdi32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\user32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\winmm.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\ole32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\oleaut32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\oleacc.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\imm32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\msctf.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\lpk.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\usp10.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\ddraw.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\dciman32.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\setupapi.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Chargé 'C:\WINDOWS\System32\dwmapi.dll', Aucun symbole n'a été chargé.
    'jeu test.exe' : Déchargé 'C:\WINDOWS\System32\ddraw.dll'
    'jeu test.exe' : Déchargé 'C:\WINDOWS\System32\dwmapi.dll'
    'jeu test.exe' : Déchargé 'C:\WINDOWS\System32\setupapi.dll'
    'jeu test.exe' : Déchargé 'C:\WINDOWS\System32\dciman32.dll'
    Le programme '[2248] jeu test.exe: Natif' s'est arrêté avec le code 0 (0x0).
    Voilà, j'ai bien rajouter mon fichier .h dans le nouveau projet, avec le fichier SDL.dll
    mais le programme ne m'affiche rien alors que quand je reprend mon projet ou j'ai créer ma classe ca fonctionne parfaitement.

  4. #4
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    As tu bien configurer tes deux projets ( celui qui marche et celui qui marche pas ) de la même manière dans les options ? (multithread, console / windows, etc..)
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    oui tout est bien configurer, après avoir fait un nouveau projet, tout linker, dans main() quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "AfficherFenetre.h"
     
    int main( int argc, char *argv[] )
    {
     
        AfficherFenetre unefenetre;
        uneFenetre.AfficherFenetre2D();
     
        return 0;
    }
    il me met 4 erreurs et un avertissement :

    ------ Début de la génération : Projet : jeu test, Configuration : Debug Win32 ------
    Édition des liens en cours...
    MSVCRTD.lib(cinitexe.obj) : warning LNK4098: conflit entre la bibliothèque par défaut 'msvcrt.lib' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library
    main.obj : error LNK2019: symbole externe non résolu "public: __thiscall AfficherFenetre::~AfficherFenetre(void)" (??1AfficherFenetre@@QAE@XZ) référencé dans la fonction _SDL_main
    main.obj : error LNK2019: symbole externe non résolu "public: void __thiscall AfficherFenetre::AfficherFenetre2D(char *,int,int,bool,bool)" (?AfficherFenetre2D@AfficherFenetre@@QAEXPADHH_N1@Z) référencé dans la fonction _SDL_main
    main.obj : error LNK2019: symbole externe non résolu "public: __thiscall AfficherFenetre::AfficherFenetre(void)" (??0AfficherFenetre@@QAE@XZ) référencé dans la fonction _SDL_main
    C:\Users\Nicolas\Documents\Projet c++ en cours\jeu test\Debug\jeu test.exe : fatal error LNK1120: 3 externes non résolus
    Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Nicolas\Documents\Projet c++ en cours\jeu test\jeu test\Debug\BuildLog.htm"
    jeu test - 4 erreur(s), 1 avertissement(s)

  6. #6
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    As tu penser à ajouter ton fichiers AfficherFentre.cpp a ton projet ?
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    A chaque nouveau projet il faut inclure le fichier.h et.cpp de ma classe ?

  8. #8
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Surtout le .cpp ...

    Le minimum requis pour compiler est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    main.cpp
    AfficherFenetre.cpp
    qui sont compiler en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    main.obj
    AfficherFenetre.obj
    qui sont linker (relier) een :
    Le .h est utilisé uniquement dans ton main.cpp
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    OK ben c'est bon alors, merci !

  10. #10
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/02/2013, 11h03
  2. Problème pour ajouter mes propres mesh
    Par supertom dans le forum Ogre
    Réponses: 2
    Dernier message: 23/10/2008, 16h42
  3. Tutos pour écrire ses propres classes/packages
    Par rod59 dans le forum Articles
    Réponses: 4
    Dernier message: 24/05/2007, 09h46
  4. Problème pour inclure une variable à un objet
    Par yoyo29 dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/05/2007, 13h01
  5. Problème pour inclure le .lib de Cximage
    Par nac dans le forum MFC
    Réponses: 2
    Dernier message: 30/03/2006, 16h22

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