2010-05-10 87 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