Partage
  • Partager sur Facebook
  • Partager sur Twitter

Segment fault => SDL_ttf

Sujet résolu
    2 février 2008 à 23:24:28

    salut a tous :)
    alors bon voila mon problème c'est que dès que jz fait appelle dans un programme a la librairie SDL_ttf le programme se lance et se ferme aussi tôt :
    et la console ( je suis sous linux Kubuntu ) m'affiche segment fault ( core dumped ) j'ai tester dans plusieurs programme et même le plus basique comme celui de matéo21 dans son cour , donc la je bloque un peu surtout que tout est ok (je pense :euh: ) niveau installation et linker .....

    merci de votre aide gentil zéro :p
    • Partager sur Facebook
    • Partager sur Twitter
      2 février 2008 à 23:28:19

      Typiquement c'est une erreur de chargement de la police, tu as vérifié ce point là ?
      Quoi qu'il en soit, nous ne sommes pas devins : sans code, one ne peut pas grand chose pour toi. ;)

      edit : ajout d'un petit smiley pour faire moins méchant
      • Partager sur Facebook
      • Partager sur Twitter
        2 février 2008 à 23:40:28

        alors désoler j'ai pas balancer de code :o
        donc voila j'ai fait se que tu ma dit avec ce code :

        1. #include <stdlib.h>
        2. #include <stdio.h>
        3. #include <SDL/SDL.h>
        4. #include <SDL/SDL_image.h>
        5. #include <SDL/SDL_ttf.h>
        6. int main(int argc, char *argv[])
        7. {
        8.     SDL_Surface *ecran = NULL, *texte = NULL;
        9.     SDL_Rect position;
        10.     SDL_Event event;
        11.     TTF_Font *police = NULL;
        12.     SDL_Color couleurNoire = {0, 0, 0};
        13.     int continuer = 1;
        14.     SDL_Init(SDL_INIT_VIDEO);
        15.     TTF_Init();
        16.     ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        17.     SDL_WM_SetCaption("Gestion du texte avec SDL_ttf", NULL);
        18.     /* Chargement de la police */
        19.     police = TTF_OpenFont("angelina.ttf", 65);
        20.     if ( police == NULL)
        21.     printf("ereur de chargement de la police /n");
        22.     /* Ecriture du texte dans la SDL_Surface "texte" en mode Blended (optimal) */
        23.     texte = TTF_RenderText_Solid(police, "Salut les Zér0s !", couleurNoire);
        24.     while (continuer)
        25.     {
        26.         SDL_WaitEvent(&event);
        27.         switch(event.type)
        28.         {
        29.             case SDL_QUIT:
        30.                 continuer = 0;
        31.                 break;
        32.         }
        33.         SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        34.         position.x = 60;
        35.         position.y = 370;
        36.         SDL_BlitSurface(texte, NULL, ecran, &position); /* Blit du texte par-dessus */
        37.         SDL_Flip(ecran);
        38.     }
        39.     TTF_CloseFont(police);
        40.     TTF_Quit();
        41.     SDL_FreeSurface(texte);
        42.     SDL_Quit();
        43.     return EXIT_SUCCESS;
        44. }


        donc cela m'affiche rien d'autre que le segment fault ....
        • Partager sur Facebook
        • Partager sur Twitter
          2 février 2008 à 23:52:15

          RAS pour ce code.
          Cela dit je ne sais pas si c'est pareil sous linux, mais sous windows la SDL redirige les flux de sortie vers des fichiers dans le répertoire d'éxécution du programme (donc rien dans la console). Ils n'y sont pas chez toi ?

          D'autre part il serait plus rigoureux de tout vérifier : initialisation des bibliothèque..

          Voilà, perso c'est tout ce que je peux te dire.. :(
          • Partager sur Facebook
          • Partager sur Twitter
            3 février 2008 à 2:25:19

            Est - ce que le fichier angelina.ttf est bien present dans le dossier du programme ?
            • Partager sur Facebook
            • Partager sur Twitter
              3 février 2008 à 12:52:10

              mystwarrior ==> oui le fichier est bien présent ...

              freecircus ==> heu justement ce qui est louche c'est que je ne trouve aucun fichier comme tu le dis c'est par ailleurs ce que j'ai commencer par cherché :D


              EDIT :

              aprés de grand coup de printf mon programme n'affiche aucun texte sur la console ,meme avec un printf en dessous de l'accolade du main et au dessus de
              "SDL_Surface *ecran = NULL, *texte = NULL;"

              voila donc mon debugage a moi ne fonctionne pas :(
              • Partager sur Facebook
              • Partager sur Twitter
                4 février 2008 à 22:00:25

                UP UP UP

                je me pose une question SDL_ttf utilise t'il la carte graphique , ce qui me parait peut probable mais quand même ?
                Car je ne l'ai pas installer ...
                • Partager sur Facebook
                • Partager sur Twitter
                  5 février 2008 à 1:27:16

                  Avec linux il faut aussi inclure la bibliothèque freetype (v2 je pense), l'as tu fait ?

                  Citation : M@teo21

                  Si vous êtes sous Linux ou Mac OS et que vous devez recompiler la librairie, il vous faudra en revanche Freetype pour compiler. Rendez-vous sur la page de téléchargement de Freetype pour récupérer les fichiers pour développeurs.


                  Il existe des packages sur synaptic qui contient le nécéssaire de développeur freetype.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 février 2008 à 7:20:07

                    oki merci je vais tester ce soir mais pourquoi faut t'il freetype ?
                    merci encore
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 février 2008 à 18:44:25

                      voila j'aurai voulut répondre avant mais le systeme anti-up m'en a empêcher ...

                      donc sa ne marche pas freetype v2 est installer ....
                      cela faisait parti des dépendence du paquet sdl_ttf ( c'est pas le nom exacte du paquets ) ....
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 février 2008 à 21:28:14

                        Citation : berthel

                        UP UP UP :D



                        Chez moi (Ubuntu) aucun plantage (ce qui ne prouve rien).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 février 2008 à 18:14:41

                          alors le problème vient d'où ? je sèche un peu la ....
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 février 2008 à 21:11:28

                            Citation : berthel

                            up up up



                            As-tu des warnings à la compilation ?

                            Les conseils de bon sens : tu élimines de ton code tout ce qui ne change pas le plantage jusqu'à avoir isolé ce qui en est à l'origine.

                            T'as essayé sous Windows ? Sur un autre PC ?

                            D'où vient le code, ce serait pas celui du tuto de m@téo21 sur "Ecrire avec la sdl" ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 février 2008 à 21:43:57

                              le code , j'ai juste éliminer l'affichage de l'image de fond car cela ne servait a rien ;)

                              et rajouter :
                              1. if ( police == NULL)
                              2.     printf("ereur de chargement de la police /n");

                              sinon je test ton conseil de bon sens :D
                              sur mon ancien windows sa marcher nikel

                              aucun warning a la compilation .


                              EDIT : après avoir suivit ton conseil le problème viens de cette ligne :

                              1. texte = TTF_RenderText_Solid(police, "Salut les Zér0s !", couleurNoire);


                              enfin si j'enlève cette ligne cela m'affiche quelque chose de différent
                              CAD :
                              ereur de chargement de la police

                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 février 2008 à 0:41:43

                                Si tu mets /n au lieu de \n il n'y aura pas de retour à la ligne avec tes printf() et l'affichage ne sera pas mis à jour... donc tu ne verras aucun message.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 février 2008 à 1:24:20

                                  Citation : Ceylo

                                  Si tu mets /n au lieu de \n il n'y aura pas de retour à la ligne avec tes printf() et l'affichage ne sera pas mis à jour... donc tu ne verras aucun message.



                                  Tout à fait. Et non seulement ça, mais ça peut expliquer ton problème (ne pas fermer un flux sortant -- le printf ici -- peut provoquer un comportement indéterminé donc tout peut arriver et c'est comme ça que ça se passe dans la réalité).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 février 2008 à 21:47:24

                                    oula sa va chercher loin la :D
                                    moi quand je met un /n au lieu de \n sa me m'affiche le texte que je veut suivit de /n sans retour a la ligne ^^

                                    sinon j'ai juste changer de police et sa marche maintenant....
                                    un bug de police j'aurai jamais penser a sa :D

                                    mercia tous de m'avoir aider
                                    je passe en résolu
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 février 2008 à 21:54:32

                                      Citation : berthel

                                      oula sa va chercher loin la :D
                                      moi quand je met un /n au lieu de \n sa me m'affiche le texte que je veut suivit de /n sans retour a la ligne ^^


                                      Fais comme tu veux mais ne t'étonnes pas d'avoir d'autres soucis dans tes codes plus tard, nous on te donne la règle après si tu veux faire à ta sauce...
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        13 février 2008 à 10:46:47

                                        non , y a juste un truc que je pige pas

                                        Citation : candide

                                        Si tu mets /n au lieu de \n il n'y aura pas de retour à la ligne avec tes printf() et l'affichage ne sera pas mis à jour... donc tu ne verras aucun message.



                                        quand je met /n au lieu d'un \n , cela m'affiche un quand même mon texte mais sans le retour a la ligne .... j'ai pas dit que j'allais continuer a mettre des /n .....
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          13 février 2008 à 11:22:18

                                          Citation : berthel

                                          non , y a juste un truc que je pige pas

                                          Citation : candide

                                          Si tu mets /n au lieu de \n il n'y aura pas de retour à la ligne avec tes printf() et l'affichage ne sera pas mis à jour... donc tu ne verras aucun message.



                                          quand je met /n au lieu d'un \n , cela m'affiche un quand même mon texte mais sans le retour a la ligne .... j'ai pas dit que j'allais continuer a mettre des /n .....




                                          Petit rectificatif : tu cites, non pas moi comme indiqué, mais Ceylo.

                                          D'autre part, comme je te l'ai dit, ne pas fermer (pas exemple avec \n) un flux sortant est un bug (1). Ce qui se passe sur TON écran ne préjuge de rien.

                                          EDIT
                                          Je viens de regarder dans la Norme et ce n'est pas si clair que ce j'ai dit. La nécessité de placer un \n terminal est définie par l'implémentation,son omission n'est pas dans la liste des Undefined behaviours (un bug quoi).
                                          Si je me fie à ce que disent la plupart des experts du C sur le forum clc, il est néanmoins conseillé de terminer un flux sortant de texte généré par printf par un \n. La question n'est toutefois pas extrêmement claire chez les experts eux-mêmes, cf. par exemple ceci
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Segment fault => SDL_ttf

                                          × 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