2010-02-08 2 views
4

Мне было интересно, как вы открываете файл в комплекте приложения из файла C++.Использование ресурсов iPhone в файле C++

I.E. У меня есть файл «manifest.xml», который начинается с копирования в комплект приложения. Мне нужен путь от C++ для загрузки этого файла. Я думаю, что это будет связано с установкой пути где-то в коде Obj-C, чтобы файл находился в рабочем каталоге.

+0

- или? –

ответ

2

Приложение OS X является сердцем приложения Unix.

Как приложение может найти родительский каталог и открыть файл в Linux? Вы бы сделали то же самое в C++ на OS X.

Теперь, если вы готовы сделать пару вызовов Cocoa или CoreFoundation, вы можете сделать вашу жизнь намного проще, но если ваше требование только Можно использовать вызовы C++, тогда задача не отличается от любой другой системы Unix-sytle.

5

Вы должны использовать либо CoreFoundation (C), либо Foundation (ObjC). Доступ к любым объектам в вашем комплекте приложений («Основной комплект») можно получить с помощью функций CFBundle/NSBundle.

В CoreFoundation вы (NULL-чека опускает): ".. либо загрузить этот файл"

CFURLRef manifest_url = CFBundleCopyResourceURL(CFBundleGetMainBundle(), 
               CFSTR("manifest"), CFSTR("xml"), 
               NULL); 
char manifest_path[1024]; 
CFURLGetFileSystemRepresentation(manifest_url, true, 
           manifest_path, sizeof(manifest_path)); 
CFRelease(manifest_url); 

FILE* f = fopen(manifest_path, "r"); // etc. 

В Фонде вы

NSString* manifest_string = [[NSBundle mainBundle] pathForResource:@"manifest" 
                  ofType:@"xml"]; 
const char* manifest_path = [manifest_string fileSystemRepresentation]; 

FILE* f = fopen(manifest_path, "r"); // etc. 
Смежные вопросы