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 Gregplus . Évalué à 2.
- 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 cho7 (site web personnel) . Évalué à 2.
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 Frédéric Lopez . Évalué à 1.
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 cho7 (site web personnel) . Évalué à 1.
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 cho7 (site web personnel) . Évalué à 1.
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.