[C++] Chemin d'accès fichiers externes

Aurélien-A

Membre confirmé
19 Mai 2005
76
3
41
Edinburgh
www.billou-net.info
Salut,

Je cherche à solutionner un problème d'accès à un fichier dans un projet assez hybride:

En effet, il utilise C++, la librairie graphique Allegro, et le tout est stocké dans une Application Bundle Mac OS X.(!!)

J'ai dans ce projet la nécessité d'accéder à des fichiers externes (texte brut, images), ce qui lors d'un récent essai de ce projet sous Windows fonctionnait très bien (accès à l'aide d'une instance de la classe ifstream ou de la fonction load_sprite(char *)).

Ok le problème c'est que sur le Mac, même si ça se compile très bien , il ne s'y retrouve plus, et la gestion d'erreur implémentée dans le projet me dit qu'il ne trouve pas le fichier en question.

Alors si une personne plus expérimentée pouvait m'éclairer.

Résumé de la situation sous Windows:

Le .exe généré l'est dans le même répertoire que les fichiers image, et le chemin relatif est respecté, donc ça marche.

Sur le Mac: il me crée un bundle avec la structure suivante

Projet.app/Contents/MacOS/<fichier exécutable>
Projet.app/Resources/<tous mes fichiers ressources en vrac>

J'ai modifié les chemis d'accès dans code source (çàd j'ai mis "../Resources/<nom du fichier>" à la place du nom de fichier seul (sous Win)).

Mais ça n'a pas beaucoup marché... :/
J'ai aussi vérifié, les fichiers ont des droits d'accès OK, rwxr-xr-x je les ai même passés un instant en 777 pour tester.


Une idée ? :)

Bonne nuit,
Aurélien
 
Aurélien-A a dit:
Projet.app/Contents/MacOS/<fichier exécutable>
Projet.app/Resources/<tous mes fichiers ressources en vrac>

J'ai modifié les chemis d'accès dans code source (çàd j'ai mis "../Resources/<nom du fichier>" à la place du nom de fichier seul (sous Win)).

Mais ça n'a pas beaucoup marché... :/
Ca marche si tu mets le bon chemin. Il fait remonter jusqu'au répertoire Projet.app :
../../../Resources/<nom de ton fichier>
:zen:
 
ntx a dit:
Ca marche si tu mets le bon chemin. Il fait remonter jusqu'au répertoire Projet.app :
../../../Resources/<nom de ton fichier>
:zen:

Correction de mon précédent message:

La structure du .app est

Projet.app / Contents / MacOS / éxécutable
Projet.app / Contents / Resources / fichiers divers

Donc le chemin que j'ai indiqué est à priori le bon...
 
ntx a dit:
Moi je dirais plutôt :
../../Resources/<nom de ton fichier>

J'ai trouvé en bidouillant un peu. En fait c'est pas très logique, mais on a affaire à ça:

.app/Contents/MacOS/exécutable
.app/Contents/Resources/fichiers

mais les chemins d'accès doivent partir ... du .app

C'est "UNIX-ement" illogique, mais ça se tient. Personnellement je n'y aurais pas pensé du premier coup.

Aurélien