2010-05-10 86 views
2

我目前正在直接与Cocoa一起构建一个屏幕保护程序。现在我试图从.saver包中加载资源时遇到了问题。我基本上有一个小型的C++包装类,使用freeImage加载.exr文件。只要我使用绝对路径,这就行得通了,但这不是很有用,是吗?所以,基本上,我尝试了一切:将.exr文件放在.saver捆绑包本身的级别,在捆绑的资源文件夹内,等等。使用相对路径在Cocoa/C++中加载资源

然后,我只是试图加载.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]; 

...这似乎是找到可可资源的常用方法,但由于某种原因它在我的情况下空。有关于此的任何想法? 我真的尝试过一些没有成功的东西,所以我会为某些输入感到高兴!

+0

好吧,我刚刚发现NSString * path = [[NSBundle mainBundle] bundlePath];指向运行我的屏幕保护程序的ScreenSaver.app,所以我猜资源需要与之相关?我会怎么做? – moka 2010-05-10 07:19:41

回答

2

您应该使用NSBundle bundleWithIdentifier:而不是mainBundle来获得对您的屏幕保护程序包的引用。

讨论部分:

此方法通常使用 框架和插件来定位在运行时 自己束。这个 方法可能比试图使用 bundleForClass:方法定位捆绑包的效率要高一些 。

+0

谢谢,这正是我一直在寻找的! – moka 2010-05-10 09:09:25