Inclure une image à mon projet SDL

JoJoS

Membre actif
23 Août 2005
144
3
Bonjour à tous !!

Bon bin j'ai encore un problème avec XCode et la SDL.
Je voudrais faire afficher une image dans mon application SDL mais je n'y arrive pas.

Le problème ne vient pas de savoir comment faire, mais plutôt, comment accéder à mon image. Je ne sais pas quel chemin mène à l'image...

dans mon code je met
Bloc de code:
IMG_Load("mon_image");
et naturellement ca me la trouve pas...

Alors j'ai essayer de la mettre au niveau des sources, au niveau de l'executable, mais je n'y arrive pas...

Merci de votre aide !!
 
Bonjour à tous !!

Bon bin j'ai encore un problème avec XCode et la SDL.
Je voudrais faire afficher une image dans mon application SDL mais je n'y arrive pas.

Le problème ne vient pas de savoir comment faire, mais plutôt, comment accéder à mon image. Je ne sais pas quel chemin mène à l'image...

dans mon code je met
Bloc de code:
IMG_Load("mon_image");
et naturellement ca me la trouve pas...

Alors j'ai essayer de la mettre au niveau des sources, au niveau de l'executable, mais je n'y arrive pas...

Merci de votre aide !!
as tu mis les images dans le même répertoire que le .app ??
 
Ouais... J'ai déjà testé
mais impossible...
 
Bin ca ne m'aide pas plus que ca...
 
load image heum

j'ai rien testé ni lu mais j'utilise mon cerveau ::rateau:

ca ne fonctionne pas parce qu'il ne la trouve pas
quand je start une appli mon dossier courant sur la console est /
ou si je start depuis un tty mon home non ?:rateau: ( connaissance basique de ton environnement de dev
bien sur tu as préalablement lu la doc de ta cible ... )

donc j'imagine qu' avec un CFBundleCopyResourceURL();
puis un CFURLCopyFileSystemPath(); :eek:
(ps CFUrl to char * fullpath j'imagine que load_img prend un char* en argument)

ps tu peux aller aussi taper directement dans myURL->thepath (c'est une struct ) ...

file://the/path ...

on devrait avoir quelque chose du genre IMG_load("fullpath/app.app/Contents/Resources/mon.img") :eek:

non ?
enfin c'est comme ça que la doc d'apple CFBundle explique le bignou :rateau:

ou encore une autre approche comme je l'explique ici

pub/Projects/rtool/rtool-12.1/samples/ShareToResources.c


c'est marrant de gueuler en voulant créer des CFBundle sans lire la doc du CoreFoundation ? :rolleyes:

remarque t'aurais eu le meme probleme sur n'importe quel OS ...
les neurones ca ne dépends pas de ça heureusement et les newbs
éviter d'utiliser cet icon
icon8.gif
parce que ca m'énerve encore plus

et dans notre cas si c'est une mainBundle app quelque chose du genre
Bloc de code:
if( 
(ResourcesPath = CFStringCreateWithFormat(
                         kCFAllocatorDefault,
                         NULL,
                         CFSTR("%@/Contents/Resources"),
                         theBundlePath)
) 
)
{
  return CFStringToCString(ResourcesPath);
}
je ne rentre pas dans l'avantage de la première méthode à propos de la localization ...
car la documentation d'un os c'est fait pour les crapaux baveux et tous ceux qui se font chier à l'écrire
ou a écrire des milliards de samples codes sur le sujet sont des débiles mentaux qui perdent leur temps ...
puisqu'il y a toujours des indécrotables "fégnasses" ...
 
Ca fait hyper plaisir de voir la facon dont on se fait répondre !!!

Entre un "regarde sur les forums de macbidouille" et un "c'est marrant de gueuler en voulant créer des CFBundle sans lire la doc du CoreFoundation" !!

Je n'utilise pas de CFBundle, je ne sais pas comment ca marche. Je veux juste programmer en C mon application SDL!

Bref, je vais voir ailleurs pour l'aide.

Merci quand même et surtout à p4bl0 pour avoir répondu le plus proche de ce que je demandais.
 
J'ai eu un souci similaire avec un fichier data.

La solution que j'ai choisi c'est:
IMG_Load("MonApp.app/Contents/Resources/monimage");

Sinon, je te trouve un peu dur avec tatouille car il essaie de te faire avancer....
 
Entre un "regarde sur les forums de macbidouille" et un "c'est marrant de gueuler en voulant créer des CFBundle sans lire la doc du CoreFoundation" !!
Tu ne veux pas aussi qu'on fasse le code à ta place ! :mad: La solution est chez MacBidouille, je ne suis pas là pour recopier ce qui a déjà été dit ailleurs. Si tu as la flemme d'aller voir là bas et bien d....... toi tout seul. :mouais:
 
Merci DualG4, je vais tester ca ce soir!! Mais c'est bizare quand même, dans XCode, quand on ajoute une image, il nous demande si l'on veut un path relatif, absolue, suivant le projet, etc... Mais ca ne change rien...

Désolé si je suis "dur", mais c'est assez frustrant de demander de l'aide et de se faire traiter de feignasse! Et sur le coup, je me trouve moins dur que lui! Je débute en C et surtout en développement mac, que je trouve d'ailleur plus compliquer que sous Windaube (mais plus interressant).
Et pourtant je l'ai bouffer le guide XCode, mais quand on trouve pas, un petit coup de pouce ca fait plaisir.

Pour le forum de macbidouille, il faut s'inscrire pour faire une recherche. Sinon j'ai essayé de parcourir les pages 1 à 1 mais j'ai pas trouvé de titre interressant.
 
Pour le forum de macbidouille, il faut s'inscrire pour faire une recherche. Sinon j'ai essayé de parcourir les pages 1 à 1 mais j'ai pas trouvé de titre interressant.
Il fallait retourner jusqu'au mois de juin 2006. La conclusion est la même que celle de DualG4 avec quelques combines en plus.
 
Oki cool merci !!! Je vais voir ca ce soir en rentrant !!
 
Ca me soul, ca ne marche pas... Je dois me tromper autre part...
Du coup j'ai tout supprimer. Je recommencerai tout quand j'aurai plus de temps. Mais qu'est ce que c'est pénible !!!!
 
Ha c'est bon, ca a enfin fonctionné !!! Merci de votre aide !!

J'ai tout d'abord refait un projet, puis pour les chemins j'ai suivi les conseils du lien donné par ntx. nomAppli.app/Contents/Resources/nomImage.extension.

Encore merci, je vias pouvoir dormir l'esprit tranquil !!!

ps: désolé de m'être emporté !
 
Ha c'est bon, ca a enfin fonctionné !!! Merci de votre aide !!

J'ai tout d'abord refait un projet, puis pour les chemins j'ai suivi les conseils du lien donné par ntx. nomAppli.app/Contents/Resources/nomImage.extension.

Encore merci, je vias pouvoir dormir l'esprit tranquil !!!

ps: désolé de m'être emporté !

et ha par ca gros gogole tu n' utilises pas un cfbundle == package


nomAppli.app/Contents/Resources/nomImage.extension.

:rateau:
 
Bin j'ai pas l'impression non.
J'utilise juste le chemin en dur à l'interieur de l'application.

J'ai regarder la doc de CFBundle et c'est vrai que ca pourrait être bien mieu, mais je ne comprends pas vraiment comment l'utiliser. Alors pour le moment je laisse de coté.
 
Bin j'ai pas l'impression non.
J'utilise juste le chemin en dur à l'interieur de l'application.
Ce que tu appelles l' "application", ton .app, est un "bundle". Donc par les méthodes de CFBundle tu peux obtenir des infos et travailler sur ton bundle.
 
autre approche concernant les binaires mach-o
oui je developpe une appli en C sous osx un minimum
c'est de s'interresser au bidule de meme à ELF sous un Linux
et comment fonctionne son linker

Bloc de code:
int main(int argc, const char * argv[])
{
  getNSGetExecutablePath((char *)argv[0]);

  return 0;
}

int getNSGetExecutablePath(char *pname)
{
    int status = -1;
     uint32_t pathsize;
    int result;
    char *given_path = malloc(MAXPATHLEN * 2);
    if (!given_path) return status;

    pathsize = MAXPATHLEN * 2;
    result = _NSGetExecutablePath(given_path, &pathsize);
    
    if (result == 0)
    {
        printf("-- getNSGetExecutablePath %s : %s --\n\n",pname,given_path);
        status = 0;
   }
   free (given_path);
   return status;
}

******darwin libdyld************************************** 
int
_NSGetExecutablePath(
char *buf,
unsigned long *bufsize)
{
    static int (*p)(char *buf, unsigned long *bufsize) = NULL;

    if(p == NULL)
        _dyld_func_lookup("__dyld__NSGetExecutablePath",
                  (unsigned long *)&p);
    return(p(buf, bufsize));
}
NSModule(3)
NSModule - programmatic interface for working with modules and symbols
These routines are the programmatic interface for working with modules
and symbols in a program. A program is composed of a set of images, an
executable, plugins, and dynamic shared libraries. An image which is
an executable or a plugin is composed of one module containing a col-collection
lection of symbols.
5 minutes sur le site de L'ADC

http://developer.apple.com/documentation/Darwin/Reference/Manpages/man3/NSModule.3.html
http://developer.apple.com/documentation/Darwin/Reference/Manpages/man3/dyld.3.html

http://developer.apple.com/documentation/CoreFoundation/index.html
http://developer.apple.com/document...eference/CFBundleRef/Reference/reference.html
http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/Tasks/locating.html
http://developer.apple.com/document...ceptual/CFBundles/Concepts/BundleAnatomy.html

voila c'est du C c'est super Basique 6 jours de rien contre 5 minutes ds la documentation Apple ...