Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2013, à 17:53

kinezana

include SDL_Image dans Code::Blocks

Salut tout le monde.

Je voudrais include la bibliothèque SDL_Image.h dans mon code C, j'ai essayé de l'installer en faisant :

sudo apt-get install libsdl-image1.2-dev

Mais ça ne suffit pas.

Je ne sais pas où me rendre dans Code::Blocks pour ajouter un chemin vers le fichier qu'il faut, ni quel est ce fichier.
Pour ce dernier problème, j'ai quand même une petite liste obtenu après avoir fait

locate libsdl-image

qui me donne ça (à part quelques trucs dans le répertoire local de Steam qui ne sont sûrement pas ce que je veux) :

/usr/share/doc/libsdl-image1.2
/usr/share/doc/libsdl-image1.2/README
/usr/share/doc/libsdl-image1.2/changelog.Debian.gz
/usr/share/doc/libsdl-image1.2/copyright
/usr/share/lintian/overrides/libsdl-image1.2
/var/cache/apt/archives/libsdl-image1.2_1.2.12-4ubuntu1_i386.deb
/var/lib/dpkg/info/libsdl-image1.2:i386.list
/var/lib/dpkg/info/libsdl-image1.2:i386.md5sums
/var/lib/dpkg/info/libsdl-image1.2:i386.postinst
/var/lib/dpkg/info/libsdl-image1.2:i386.postrm
/var/lib/dpkg/info/libsdl-image1.2:i386.shlibs
/var/lib/dpkg/info/libsdl-image1.2:i386.symbols

Question : quel est le fichier à linker, et où le faire ?

Merci smile

Hors ligne

#2 Le 23/11/2013, à 09:32

darunia_goron

Re : include SDL_Image dans Code::Blocks

Les noms des paquets ne sont pas exactement les même que les noms des bibliothèques.

Utilise :

pkg-config --cflags sdl

et

pkg-config --libs sdl

pour connaître les includes et le linkage.

Tu as également intérêt à utiliser les commandes ci-dessus lors de la compilation. Ça rendra ton code plus portable.

Hors ligne

#3 Le 23/11/2013, à 12:29

kinezana

Re : include SDL_Image dans Code::Blocks

Ok donc j'ai un peu avancé, je crois que SDL_Image est bien intégré au projet
J'ai mis la ligne #include <SDL/SDL_image.h>
Quand je veux compiler ça me dit :
"référence indéfinie vers IMG_Load" (une fonction de SDL_image)
mais pourtant SDL_image est bien intégré puisque quand je commente (//) la ligne #include ça me dit que IMG_Load n'est pas déclarée...

Donc je ne comprends pas trop hmm

Hors ligne

#4 Le 23/11/2013, à 12:54

darunia_goron

Re : include SDL_Image dans Code::Blocks

Il y a deux phases à la création d'un exécutable :
- La compilation qui transforme le code (fichier .c) en objet (fichier .o), exemple :

gcc -c toto.c -o toto.o
gcc -c tata.c -o tata.o

- Le linkage qui assemble les objets pour créer un programme, exemple :

gcc toto.o tata.o -o mon_programme

Quand tu utilises

gcc fichier.c -o mon programme

gcc se charge de réaliser les deux étapes ci-dessus de manière transparente.


Dans ton cas, au moment de la création des objets, gcc est capable de trouver les fichier .h (les headers de la bibliothèque SDL). En revanche, au moment du linkage, il ne sait pas comment relier tes objets avec la bibliothèque SDL (libSDL.so). Pour cela, tu dois utiliser l'option -l de gcc pour explicitement lui dire quelle bibliothèque utiliser.



En bref, utilise :

#include <SDL_image.h>

Compile avec :

gcc -c toto.c -o toto.o $(pkg-config --cflags sdl)
gcc toto.o tata.o -o mon_programme $(pkg-config --libs sdl) -lSDL_image

Tu dois spécifier -lSDL_image.
pkg-config se chargera pour toi de faire les includes et les autres linkages qui vont bien.

Dernière modification par darunia_goron (Le 23/11/2013, à 13:09)

Hors ligne

#5 Le 23/11/2013, à 15:46

kinezana

Re : include SDL_Image dans Code::Blocks

Merci beaucoup, ça marche et j'ai compris.
C'est cool d'avoir pris le temps d'expliquer et détailler, j'apprécie smile

Hors ligne