0

我正在尝试使用 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 文件夹中,但都没有成功。

4

1 回答 1

0

文件的路径名是相对于当前工作目录的,这在从 Xcode 或 Finder 启动的程序中是不可预测的(在 shell 中,它基于你上次运行的位置cd)。

除非函数的文档说它会在应用程序包中搜索文件名,否则您不能真正假设它会。相反,查看NSBundle类并使用这些方法自动找到位于资源等位置的文件的完整路径;然后在这种情况下将该完整路径传递给图像加载器。

于 2012-07-14T05:08:28.467 回答