【问题标题】:SDL2 not recieving any events at allSDL2 根本没有收到任何事件
【发布时间】:2016-05-28 20:35:59
【问题描述】:

在 SDL2 项目中,SDL_PollEvents( SDL_Event* e ) 不发送任何事件,并且总是返回 0,因此我无法处理任何事件。我的事件处理循环看起来不错:

SDL_Event e;

while( SDL_PollEvent( &e ) > 0 )
{
    //this is never reached !
    printf( "recieved event %d\n", e.type );

    switch(e.type)
    {
        case SDL_QUIT:
            quit = true;
    }
}

另一方面,它编译得很好,可以绘图,而且我确信它不会陷入无限循环(我让它在每一帧打印出一条消息)。

我链接到SDL2 和所有其他依赖项,我什至让gcc/g++ 调用sdl-config --cflags。如何解决这个问题?

【问题讨论】:

    标签: c++ c sdl-2


    【解决方案1】:

    你不应该打电话给sdl-config --cflags。这是针对SDL(库的第一个版本),而不是SDL2。它以某种方式冲突并阻止所有事件到达SDL_PollEvents()。删除它,它应该可以工作!

    【讨论】:

    • 如果有人知道它是如何阻止事件的,我很乐意知道!
    • --cflags 将包含路径添加到 SDL1 的包含,而不是 SDL2。很难确定(尤其是因为您没有指定是否包含 <SDL2/SDL.h><SDL.h>),但它可能与 SDL_Event 结构不匹配(布局 大小本身)在 SDL1 和 SDL2 之间,导致未定义的行为。
    • @Tim Căs Thans !我在 Linux 上,所以我包括 <SDL2/SDL.h>
    • 那就没有线索了。不过,您可以手动检查 sdl-config --cflags 所做的事情(只需自己运行)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多