0
我正在嘗試使用Xcode在Mac OS X Lion中獲取SDL設置。到目前爲止,我似乎除了加載圖像之外,其他所有工作都已完成(使用SDL_image)我正在使用下面的代碼,它將在通過命令行編譯代碼時不起作用,但不會在此Xcode安裝程序中生效。使用.app軟件包時無法加載圖像
SDL_Surface* load_image(std::string filename)
{
SDL_Surface* loadedImage = NULL;
SDL_Surface* optimizedImage = NULL;
loadedImage = IMG_Load(filename.c_str());
if(loadedImage != NULL)
{
optimizedImage = SDL_DisplayFormatAlpha(loadedImage);
SDL_FreeSurface(loadedImage);
} else {
std::cout << "Error loading image: " << filename << " Error:"<< std::endl << SDL_GetError() << std::endl;
}
return optimizedImage;
}
當調用這個函數,我回去一個空指針和控制檯這樣說:
Error loading image: puppy.png Error:
Couldn't open puppy.png
我已經看過了捆綁,並puppy.png被放在資源文件夾中預期。我也嘗試調用load_image(「../ Resources/puppy.png」)或將puppy.png移動到MacOS文件夾中,但都沒有成功。
文件的路徑名與當前工作目錄相關,這在從Xcode或Finder啓動的程序中是不可預知的(在shell中,它基於上次運行'cd'的位置)。除非函數的文檔說它在應用程序包中搜索文件名,否則你不能假定它會。相反,查看'NSBundle'類並使用這些方法自動查找位於諸如「資源」之類的文件的完整路徑;然後在這種情況下將完整路徑傳遞給圖像加載器。 – 2012-07-14 04:41:14
@KevinGrant謝謝!使用NSBundle解決了我的問題。如果您將其作爲回覆發佈,我會接受它。 – Cole 2012-07-14 05:05:32
沒問題。我做了答案。 – 2012-07-14 05:08:39