2010-02-08 147 views
4

我想知道如何從C++文件打開應用程序包中的文件。在C++文件中使用iPhone資源

I.E.我有一個文件「manifest.xml」,它開始複製到應用程序包中。我需要從C++的方式來加載這個文件。我認爲這將涉及在Obj-C代碼中的某處設置路徑,以便該文件位於工作目錄中。

+0

- 要麼? – 2010-02-08 07:21:31

回答

2

OS X應用程序的核心是Unix應用程序。

應用程序如何找到其父目錄並在Linux上打開文件?你會做同樣的方式在C++在OS X現在

,如果你願意做一些可可或電話的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.