gpt4 book ai didi

c - SDL 2 在轮询事件时挂起

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:05 25 4
gpt4 key购买 nike

我正在开发一个简单的 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();

最佳答案

尝试:

#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

我得到一个窗口,当您按下某个键时,该窗口会弹出并消失。显然还有更多工作要做......

你看过这么好的教程吗?

http://www.willusher.io/pages/sdl2/

关于c - SDL 2 在轮询事件时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com