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



## Aurélien-A (2 Mai 2006)

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


----------



## ntx (2 Mai 2006)

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)).
> ...


Ca marche si tu mets le bon chemin. Il fait remonter jusqu'au répertoire Projet.app :
../../../Resources/<nom de ton fichier>


----------



## Aurélien-A (2 Mai 2006)

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>



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 (2 Mai 2006)

Moi je dirais plutôt :
../../Resources/<nom de ton fichier>


----------



## Aurélien-A (3 Mai 2006)

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


----------

