Forum Programmation.c Allegro et load_bitmap

Posté par  (site web personnel) .
Étiquettes : aucune
0
24
fév.
2005
Bonjour,

je me suis mis à allegro ce matin, et j'ai quelques soucis.
Quand je fais appel à load_bitmap, mon programme segfault mechamment.
Mon bout de code est le suivant :
BITMAP *sprite1=NULL;
sprite1=load_bitmap("plop.bmp",NULL);


Ca vient peut-ête du format de l'image qui ne serait pas un bitmap valide ? J'ai essayé avec du PCX, et idem, donc je ne sais pas si ca vient du format ou d'autre chose (j'ai essayé un chemin relatif, et absolu). Peut etre avez-vous une methode avec gimp pour générer un bmp de 16 bits mini (mon tuto me dit que 8bits ca ne marchera pas), et ainsi ecarter la thèse du mauvais format ?

2eme probleme, qui n'en est pas vraiment un mais bon..

J'utilise les fonctions text_mode, textout, textprintf, et elles me font un warning à la compile : deprecated. Très bien, mais j'mets quoi à la place ?? :-/


Merci pour votre aide.
  • # Hum

    Posté par  . Évalué à 2.

    Quelques trucs à essayer dans ces cas là :
    - essayer avec différentes images
    - faire un strace pour voir si il trouve le fichier ou pas
    - passer ton prog dans gdb, avec la commande "where" tu pourras voir exactement ou ça plante
    - essayer avec une autre version de allegro
    • [^] # Re: Hum

      Posté par  (site web personnel) . Évalué à 2.

      Erf, merci mais hélas ca ne m'avance pas plus... :
      Starting program: /home/patate/eclipse/workspace/AllegroTest/Debug/AllegroTest
      [Thread debugging using libthread_db enabled]
      [New Thread -1211494272 (LWP 4429)]
      [Switching to Thread -1211494272 (LWP 4429)]

      Breakpoint 1, _mangled_main (argc=1, argv=0xbffff924) at ../main.c:11
      11 sprite1=load_bitmap("/home/patate/Desktop/liberty.bmp",NULL);
      (gdb) step

      Program received signal SIGSEGV, Segmentation fault.
      0xb7f3bb7f in create_bitmap_ex () from /usr/lib/liballeg.so.4.1
      (gdb) where
      #0 0xb7f3bb7f in create_bitmap_ex () from /usr/lib/liballeg.so.4.1
      #1 0x08048ec0 in _IO_stdin_used ()
      #2 0x0804a118 in ?? ()
      #3 0x00000018 in ?? ()
      #4 0xb7f152e9 in load_bmp () from /usr/lib/liballeg.so.4.1
      #5 0xb7ef99f8 in ?? () from /usr/lib/liballeg.so.4.1
      #6 0xbffff780 in ?? ()
      #7 0x00000008 in ?? ()
      #8 0x00000000 in ?? ()
      #9 0xb7dd6000 in ?? ()
      #10 0x0000000a in ?? ()
      #11 0xb7dd63c4 in ?? ()
      #12 0xb7dd6a80 in ?? ()
      #13 0xb8000c00 in ?? () from /lib/ld-linux.so.2
      #14 0xb7fe919c in ?? ()
      #15 0xb7fea9cb in ?? () from /lib/ld-linux.so.2
      #16 0xbffff434 in ?? ()
      #17 0xb7ff23cf in _dl_lookup_versioned_symbol () from /lib/ld-linux.so.2
      Previous frame inner to this frame (corrupt stack?)


      et dans strace :
      open("/home/patate/Desktop/liberty.bmp", O_RDONLY) = 3
      lseek(3, 0, SEEK_END) = 90054
      lseek(3, 0, SEEK_SET) = 0
      lseek(3, 0, SEEK_CUR) = 0
      read(3, "BM\306_\1\0\0\0\0\0006\0\0\0(\0\0\0\310\0\0\0\226\0\0\0"..., 4096) = 4096
      --- SIGSEGV (Segmentation fault) @ 0 (0) ---
      +++ killed by SIGSEGV +++


      Je ne comprends pas :'(
      Any help is welcome

      Merci
  • # Changer de version...

    Posté par  . Évalué à 1.

    Visiblement, tu utilises une version assez ancienne d'Allegro. Je te conseille de récupérer la dernière (4.1.18) ou au moins une version récente. Ça corrigera probablement ton problème de lecture de BITMAP.

    Concernant tes problèmes avec les appels « deprecated », voir : http://alleg.sourceforge.net/onlinedocs/en/api.html(...)

    Sinon, c'est quoi le tutoriel que tu utilises, il date de quand ?
    • [^] # Re: Changer de version...

      Posté par  (site web personnel) . Évalué à 1.

      Visiblement, tu utilises une version assez ancienne d'Allegro. Je te conseille de récupérer la dernière (4.1.18) ou au moins une version récente

      ici j'ai ii liballegro-dev 4.1.15-5 development files for the Allegro library
      , donc je pense que ca va de ce coté.
      Mon tutorial date du 28/07/2004, trouvé dans la rubrique tuto du site d'allegro.
  • # Arf

    Posté par  (site web personnel) . Évalué à 1.

    Bon en fin de compte j'ai trouvé merci pour votre aide.
    Il fallait appeler load_bitmap APRES avoir initiallisé le mode graphique...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.