PDA

Afficher la version complète : [Réglé] petit probleme de chemin sous kdevelopp



Asmod_D
13/11/2006, 20h23
salux,

j'ai fait un petit programme sdl sous kdevelop , donc voila lorsque l'on crée un projet sous kdevelop par exemple avec un projet nommé
momo , momo se tranforme en repertoire dans laquelle se trouve des fichiers et deux autres repertoires : src et templates. les codes sources de sdl se trouvent dans le repertoire src mais le probleme est lorsque je veux introduire une image .bmp , que se soit dans le repertoire momo ,src,templates le programme ne trouve pas l'image bmp pourquoi ?

excusez moi si je suis nul ,je debute sur linux et kdevelop !

merci !

Dudule-le-poisson
13/11/2006, 21h35
Si ton image n'est pas intégrée d'une manière ou d'une autre dans ton exécutable, alors tu dois la désigner par un chemin relatif au dossier dans lequel tu exécutes ton programme. Tu pourrais nous donner un extrait du code où tu fais appel à ton fichier (personnellement, je ne connais pas toutes les libs ^^; ) ?

Asmod_D
14/11/2006, 18h24
salux,

voici le bon de code pas tres super de sdl :

#include <iostream>
#include <stdlib.h>
#include "SDL.h"

using namespace std;

int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *imageDeFond = NULL;
SDL_Rect positionFond;

positionFond.x = 0;
positionFond.y = 0;
imageDeFond=NULL;
SDL_Init(SDL_INIT_VIDEO);

ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);

/* Chargement d'une image Bitmap dans une surface */
imageDeFond = SDL_LoadBMP("/image/src/lac.bmp"); /* image est le nom du projet et crée un reperpertoire image dans mon dossier dom*/
if(imageDeFond==NULL)
{
return false;
}

/* On blitte par-dessus l'écran */
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

SDL_Flip(ecran);
pause();

SDL_FreeSurface(imageDeFond); /* On libère la surface */
SDL_Quit();

return EXIT_SUCCESS;
}

voici le code

merci!

Dudule-le-poisson
14/11/2006, 20h25
/* Chargement d'une image Bitmap dans une surface */
imageDeFond = SDL_LoadBMP("/image/src/lac.bmp"); /* image est le nom du projet et crée un repertoire image dans mon dossier dom*/
C'est bien ce que je pensais, tu passes une chaîne de caractères représentant l'adresse du fichier en paramètre à une fonction quelconque. À l'exécution, le programme va (sauf codage douteux derrière, mais dans SDL, ça m'étonnerait) essayer d'ouvrir le fichier /, la racine http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif Essaye avec un chemin relatif au dossier où tu exécutes ton programme, genre "image/src/lac.bmp"

Asmod_D
16/11/2006, 13h41
salux,

je te remercie pour tes conseils Dudule-le-poisson mais ça ne fonctionne pas non plus. mais j'ai changé le chemin en :/home/do/lac.bmp en faisant une copie de mon image dans mon repertoire racine et la ça fonctionne ,pourquoi ?


merci encore !

Dudule-le-poisson
16/11/2006, 19h11
Ça fonctionne car tu as indiqué un chemin absolu (donc non ambigu) et correct, donc ton fichier a pu être ouvert.
Évidemment, cette solution n'est pas utilisable. Pour faire simple :
-dans le code source, mets juste "lac.bmp"
-repère où se trouve l'exécutable généré après compilation
-place l'image à côté
-prends une console, rends toi dans le dossier contenant ton exécutable et ton image (cd /le/bon/dossier)
-exécute ton programme : ./le_programme
L'image devrait être trouvée. Fais comme ça si tu fais de petits exercices. Pour de plus amples projets, tu mettras en place quelque chose de plus complexe.

Asmod_D
17/11/2006, 12h57
salux,

je te remercie fort bien pour tes renseignement ,effectivement j'ai cherché l'exeteur de mon programme puis j'ai mis le fichier bmp et j'ai tout simplement tapé dans mon source:"lac.bmp" et ça fonctionne.


merci encore !