我正在关注SDL上的lazyfoo教程,我在第01课,在屏幕上获取图像,但是SDL正在给我“无法加载hello.bmp”,我无法弄清楚为什么
我在他们的网站上使用OS X,Xcode 3.2和最新版本的SDL。
我怀疑它与没有正确地将hello.bmp图像加载到Xcode有关,但是我已经按照教程进行了进一步的Googling没有产生任何有用的结果。有谁知道如何进一步解决这个问题?
编辑:它似乎与相对路径有关。仍然不确定哪个部分是错的...
编辑:我已经通过转到Project - >编辑Active Executable并更改Set工作目录到'Project Directory'现在可以工作,但我不明白为什么它不会在.app本身加载hello.bmp。我错过了什么?
编辑:下面是lazyfoo课程01的源代码,根据请求包含。这是我正在使用角色代码的代码,如果您需要有关我的XCode(版本3.2)的任何信息,请告诉我。
/*This source code copyrighted by Lazy Foo' Productions (2004-2012)
and may not be redestributed without written permission.*/
//Include SDL functions and datatypes
#include "SDL/SDL.h"
int main( int argc, char* args[] )
{
//The images
SDL_Surface* hello = NULL;
SDL_Surface* screen = NULL;
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
//Set up screen
screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
//Load image
hello = SDL_LoadBMP( "3.app/Contents/Resources/hello.bmp" );
//Apply image to screen
SDL_BlitSurface( hello, NULL, screen, NULL );
//Update Screen
SDL_Flip( screen );
//Pause
SDL_Delay( 2000 );
//Free the loaded image
SDL_FreeSurface( hello );
//Quit SDL
SDL_Quit();
return 0;
}
答案 0 :(得分:0)
我发现将lesson01源代码中的“hello.bmp”替换为“X.app/Contents/Resources/hello.bmp”,其中X是XCode项目的名称,这正确地引用了应用程序即使将.app复制到桌面并在那里运行,也会构建。
另外,不要忘记将hello.bmp添加到XCode项目中。
答案 1 :(得分:0)
这是不正确的:
SDL_LoadBMP( "3.app/Contents/Resources/hello.bmp" );
您应该通过调用[[NSBundle mainBundle] pathForResource:@"hello" ofType:@"bmp"]
来获取应用程序包中资源的路径,NSString
将返回一个{{1}}对象,其中包含与该资源对应的文件的绝对路径。