Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C][SDL] Segmentation Fault

Sujet résolu
    28 avril 2006 à 12:26:39

    Bonjour à tous. Voici mon programme:
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>


    void pause();

    int main(int argc, char *argv[])
    {
            //Initialisation de la SDL
            SDL_Init(SDL_INIT_VIDEO);

            //Initialisation de la fenetre
            SDL_SetVideoMode(960,960,32,SDL_HWSURFACE);
            //Avec le changement de titre
            SDL_WM_SetCaption("Test SDL", NULL);

            //Initialisation des variables SDL
            SDL_Surface *ecran = NULL;
           
            //Affichage du fond d'écran
           
            SDL_Surface *imageDeFond = NULL;
            SDL_Rect positionFond;
            positionFond.x = 0;
            positionFond.y = 0;
            imageDeFond = SDL_LoadBMP("grass.bmp");
            SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
            SDL_Flip(ecran);

            //Mise en pause pour le développement
            pause();

            SDL_FreeSurface(imageDeFond);   

            //Arret de la SDL
            SDL_Quit();
           
            //Tout c'est bien passé
            return EXIT_SUCCESS;
    }

    //Fonction Pause()
    void pause()
    {
        int continuer = 1;
        SDL_Event event;

        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }

    Donc, il est juste sensé m'afficher l'image grass.bmp.
    Le problème survient à l'éxecution:
    razord@PcThomas ~ $ ./test
    Fatal signal: Segmentation Fault (SDL Parachute Deployed)

    Je ne comprend pas d'où ça peut venir.
    Savez-vous où est le problème ?

    Merci d'avance. ;)
    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2006 à 12:34:20

      Bonjour

      J'ai trouvé qu'une seule erreur
      il faut que tu initialises ecran avec la fonction SDL_SetVideoMode

      #include <stdlib.h>
      #include <stdio.h>
      #include <SDL/SDL.h>


      void pause();

      int main(int argc, char *argv[])
      {
              //Initialisation des variables SDL
              SDL_Surface *ecran = NULL;
                     
              //Initialisation de la SDL
              SDL_Init(SDL_INIT_VIDEO);

              //Initialisation de la fenetre
              ecran = SDL_SetVideoMode(960,960,32,SDL_HWSURFACE);
              //Avec le changement de titre
              SDL_WM_SetCaption("Test SDL", NULL);
             
              //Affichage du fond d'écran
             
              SDL_Surface *imageDeFond = NULL;
              SDL_Rect positionFond;
              positionFond.x = 0;
              positionFond.y = 0;
              imageDeFond = SDL_LoadBMP("grass.bmp");
              SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
              SDL_Flip(ecran);

              //Mise en pause pour le développement
              pause();

              SDL_FreeSurface(imageDeFond);   

              //Arret de la SDL
              SDL_Quit();
             
              //Tout c'est bien passé
              return EXIT_SUCCESS;
      }

      //Fonction Pause()
      void pause()
      {
          int continuer = 1;
          SDL_Event event;

          while (continuer)
          {
              SDL_WaitEvent(&event);
              switch(event.type)
              {
                  case SDL_QUIT:
                      continuer = 0;
              }
          }
      }


      Amicalement Mercosuh :D
      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2006 à 12:34:26

        je suis dsl j en suis pas encore a la SDL par contre on ecrit 'tout S' est bien passe' ...
        dsl :euh:
        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2006 à 19:05:34

          Mercosuh => Je ne comprend pas ce que tu veux dire : j'utilise bien la fonction SDL_SetVideoMode().
          Mr.BrYcE => Normalement il faut poster des remarques constructives qui font avancer le problème (cela dit, merci de corriger l'orthographe) :p .
          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2006 à 19:07:20

            Oui mais tu laissais la valeur par défaut d'écran (qui vaut NULL) au lieu de lui attribuer l'adresse renvoyée par SDL_SetVideoMode().
            Du coup, il essayait d'afficher ses surfaces sur du NULL, et ça plantait.
            • Partager sur Facebook
            • Partager sur Twitter

            [C][SDL] Segmentation Fault

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown