使用.app捆绑包时无法加载图像
Unable to load an image when using a .app bundle
我正在尝试用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.pn移到MacOS文件夹中,但都不起作用。
文件的路径名是相对于当前工作目录的,这在从Xcode或Finder启动的程序中是不可预测的(在shell中,它基于上次运行cd
的位置)。
除非函数的文档中说它会在应用程序捆绑包中搜索文件名,否则你不能真的认为它会这样做。相反,查看NSBundle
类,并使用这些方法自动查找位于Resources等位置的文件的完整路径;然后在这种情况下将该完整路径传递给图像加载器。
相关文章:
- 使用 SDL2 和SDL_image C++加载图像
- 在 gtkmm 中异步加载图像
- QImage:加载图像时自动检测格式
- 使用 OpenGL 加载图像时0x69ABF340 STBI_Image引发异常
- 无法在 macOS 上的 SDL 游戏中加载图像
- HDFql 保存和加载图像
- 我无法使用Win32从文件夹中加载图像
- QT 无法从缓冲区加载图像
- SDL_2加载图像不起作用
- QWebview:关闭在QWebview qt加载图像
- QLabel 从文件加载图像
- 加载图像函数在qt快速源代码
- 从CUDA中的指针加载图像并导出dll
- 加载图像约500次后,此错误显示在Visual Studio Qimage:不记忆,返回空图像
- OPENCV_使用OpenCV2的加载图像中的异常
- STBI_LOAD无法加载图像
- C++ SFML 2.0 从文件加载图像
- 如何使用咖啡加载图像
- 如何使用OpenCV加载图像(原始字节)
- 需要从数据库 c++ 加载图像