我的图片无法加载有人可以告诉我为什么请? 当我按WASD时,我正在尝试更改偏移量,它将在Code :: Blocks中工作,但不能在.exe文件中工作。
#ifdef __cplusplus
#include <cstdlib>
#else
#include <stdlib.h>
#endif
#include <SDL/SDL.h>
int WIDTH = 800;
int HEIGHT = 600;
int main (int argc, char** argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface *screen = SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_SWSURFACE|SDL_DOUBLEBUF);
if (!screen){
printf("Unable to set 800x600 video: %s\n", SDL_GetError());
return 1;
}
SDL_WM_SetCaption("The Killer Of The Night Pre-Release 0.0.1", NULL);
SDL_Surface *player = SDL_LoadBMP("lol.bmp");
if (!player){
printf("Unable to load the image here's the error: %s\n", SDL_GetError());
}
SDL_Rect offset;
offset.x = 100;
offset.y = 200;
bool done = false;
while (!done)
{
SDL_Event event;
SDL_PollEvent(&event);
if (event.type == SDL_QUIT)
{
done = true;
}
if (event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
done = true;
break;
case SDLK_w:
offset.y -= 1;
break;
case SDLK_a:
offset.x -= 1;
break;
case SDLK_s:
offset.y += 1;
break;
case SDLK_d:
offset.x += 1;
break;
}
}
SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 25,25,255));
SDL_BlitSurface(player, 0, screen, &offset);
SDL_Flip(screen);
}
return 0;
}
它在Code :: Blocks中工作正常,但是当我运行.exe文件时,它无效!?
答案 0 :(得分:0)
您需要将lol.bmp
放在包含exe的目录中。
在CodeBlocks中运行可执行文件时,工作目录是代码块项目文件(.cbp)的目录,这是lol.bmp
所在的目录。您需要将该文件放在bin/Debug/
文件夹或bin/Release/
文件夹中,具体取决于您的构建目标。
答案 1 :(得分:0)
更多信息会很好,因为“它不起作用”并没有真正说明什么是失败的。例如,它是一个DLL错误,或者像之前声明的那样是lol.bmp不在正确的文件夹中。另外我相信SDL_Rect也需要高度和宽度。