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.
NSString *path = [[NSBundle mainBundle] pathForResource:@"MyImage" ofType:@"bmp"];
Is there a corresponding function that I can call from C or C++ code, as well?
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!
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With