How can I find the path to a file in an application bundle (NSBundle) using C?

后端 未结 2 1975
予麋鹿
予麋鹿 2021-01-05 06:44

Is there a C API for finding the path to a file in an application bundle?

I know that this can be done in Objective-C with the following syntax.

NSS         


        
相关标签:
2条回答
  • 2021-01-05 06:52

    After Mike K pointed me in the right direction, I was able to retrieve the path to a file in an application bundle with the following code.

    // Get a reference to the main bundle
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    
    // Get a reference to the file's URL
    CFURLRef imageURL = CFBundleCopyResourceURL(mainBundle, CFSTR("MyImage"), CFSTR("bmp"), NULL);
    
    // Convert the URL reference into a string reference
    CFStringRef imagePath = CFURLCopyFileSystemPath(imageURL, kCFURLPOSIXPathStyle);
    
    // Get the system encoding method
    CFStringEncoding encodingMethod = CFStringGetSystemEncoding();
    
    // Convert the string reference into a C string
    const char *path = CFStringGetCStringPtr(imagePath, encodingMethod);
    
    fprintf(stderr, "File is located at %s\n", path);
    

    This seems to be a bit longer than it needs to be, but at least it works!

    0 讨论(0)
  • 2021-01-05 06:54

    you can get the main bundle via:

    CFBundleRef mainBundle = CFBundleGetMainBundle();
    

    full details here:

    http://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/CFBundles/AccessingaBundlesContents/AccessingaBundlesContents.html

    0 讨论(0)
提交回复
热议问题