我正在尝试使用Xcode在Mac OS X Lion中设置SDL。到目前为止,除了加载图像外,我似乎一切正常。 (使用SDL_image)我正在使用以下代码,这些代码在通过命令行编译代码而不是.app时起作用,但在此Xcode设置中不起作用。
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按预期放在Resources文件夹中。我也尝试调用load_image(“../ Resources / puppy.png”)或将puppy.png移动到MacOS文件夹中,但都没有工作。
答案 0 :(得分:0)
文件的路径名是相对于当前工作目录的,这在从Xcode或Finder启动的程序中是不可预测的(在shell中,它基于您上次运行cd
的任何位置)。
除非函数的文档说它在应用程序包中搜索文件名,否则你不能真正认为它会。相反,查看NSBundle
类并使用这些方法自动查找位于诸如Resources之类的地方的文件的完整路径;然后在这种情况下将完整路径传递给图像加载器。