使用相对路径在Cocoa / C ++中加载资源

时间:2010-05-10 07:12:53

标签: cocoa resources path bundle nsbundle

我目前正在与Cocoa直接合作,首次构建屏幕保护程序。现在,我在尝试从.saver捆绑包中加载资源时遇到了问题。我基本上有一个小的C ++包装类来使用.exr加载freeImage个文件。只要我使用absoulte路径,这就行,但这不是很有用,是吗?所以,基本上,我尝试了所有方法:将.exr文件放在.saver软件包本身的级别,在资源包文件夹中,依此类推。

然后我只是尝试像这样加载.exr,但没有成功:

particleTex = [self loadExrTexture:@"ball.exr"];

我还尝试将其转到.saver捆绑位置,如下所示:

particleTex = [self loadExrTexture:@"../../../ball.exr"];

...可能从该位置加载.exr,但没有成功。

然后我遇到了这个:

NSString * path = [[NSBundle mainBundle] pathForResource:@"ball" ofType:@"exr"];
const char * pChar = [path UTF8String];

...这似乎是在Cocoa中查找资源的常用方法,但由于某些原因,在我的情况下它是空的。关于那个的任何想法? 我真的尝试了一些没有成功的事情,所以我很乐意接受一些意见!

1 个答案:

答案 0 :(得分:2)

您应该使用NSBundle bundleWithIdentifier:代替mainBundle来获取对屏幕保护程序包的引用。

来自讨论部分:

  

此方法通常用于   用于定位的框架和插件   他们自己的捆绑在运行时。这个   方法可能会更有效   而不是尝试使用   bundleForClass:方法。