我正在开发一个简单的GUI,我正在尝试使用SDL库但收效甚微。我正在使用C语言开发,我无法切换到C ++。 我在Linux工作站(Red Hat Enterprise Server 5(Tikanga))上使用SDL 2.0.5。
问题在于,当我尝试捕捉事件时,窗口会挂起。没有响应,100%的CPU使用率,我要杀死这个过程。单击“x”无效。 我写了一个简单的测试代码来找出问题,但我真的不知道该怎么做。它看起来像是从未到过的内在“printf”。
此外,如果我删除事件循环,则达到SDL_Quit()(无需终止进程),它会给我一个“分段错误”。
#include <SDL.h>
#include <SDL_events.h>
SDL_Window *mainWin;
SDL_Event mainEv;
int quit = 0;
if(SDL_Init(SDL_INIT_VIDEO) != 0)
{
printf("Init error.\n");
return(1);
}
mainWin = SDL_CreateWindow("Title", 0, 0, 640, 480, 0);
while(!quit)
{
while(SDL_PollEvent(&mainEv))
{
printf("Event!\n");
switch(mainEv.type)
{
case SDL_KEYDOWN:
quit=1;
}
}
}
SDL_Quit();
答案 0 :(得分:1)
尝试:
#include <SDL2/SDL.h>
//#include <SDL_events.h>
int main(void)
{ SDL_Window *mainWin;
...
... // same up to:
...
case SDL_KEYDOWN:
quit = 1;
...
SDL_Quit();
}
我将您的代码粘贴到“ sdl_t.c ”中,因此将其编译为:
gcc sdl_t.c `sdl2-config --libs --cflags` -o sdl_t
当你按一个键时,我会弹出一个窗口然后消失。显然还有更多事情要做......
你见过这个好教程吗?