使用相对路径在Cocoa/C++;

使用相对路径在Cocoa/C++;,cocoa,resources,path,bundle,nsbundle,Cocoa,Resources,Path,Bundle,Nsbundle,我目前第一次直接与Cocoa合作构建屏幕保护程序。现在,我在尝试从.saver捆绑包中加载资源时遇到了一个问题。我基本上有一个小型的C++包装类来加载 .Exr> /Cord>文件,使用 FrimeIs/COD>。只要我使用Absolute路径,它就可以工作,但这不是很有用,是吗?因此,基本上,我尝试了一切:将.exr文件放在.saver捆绑包本身的级别,放在捆绑包资源文件夹中,等等 然后,我尝试像这样加载.exr,但没有成功: particleTex = [self loadExrTextur

我目前第一次直接与Cocoa合作构建屏幕保护程序。现在,我在尝试从
.saver
捆绑包中加载资源时遇到了一个问题。我基本上有一个小型的C++包装类来加载<代码> .Exr> /Cord>文件,使用<代码> FrimeIs/COD>。只要我使用Absolute路径,它就可以工作,但这不是很有用,是吗?因此,基本上,我尝试了一切:将
.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];
…这似乎是在可可中寻找资源的常见方式,但出于某种原因,在我的例子中,它是空的。有什么想法吗? 我真的尝试了我脑海中出现的任何东西,但没有成功,所以我会很高兴得到一些意见

您应该使用NSBundle而不是
mainBundle
来获取屏幕保护程序包的引用

从讨论部分:

此方法通常由以下人员使用: 要定位的框架和插件 他们自己的包在运行时。这 方法可能更有效一些 而不是使用 bundleForClass:方法


好的,我刚刚找到了NSString*path=[[NSBundle mainBundle]bundlePath];指向运行我的屏幕保护程序的ScreenSaver.app,所以我想资源需要与之相关?我该怎么做?谢谢这正是我想要的!