C SDL窗口无法正确打开

C SDL窗口无法正确打开,c,sdl,C,Sdl,我正在学习使用SDL库。然而,在我面临的诸多问题中,有一个问题我在互联网上找不到解决办法。我使用SDL\u SetVideoMode设置视频模式特征,但在运行程序时没有出现新窗口。唯一发生的事情是,我的终端显示了一个奇怪的模式,但它看起来不像我应该拥有的窗口,即使它显示了,它也不会打开一个新窗口。这发生在我试图运行程序的shell窗口中 节目如下: #include <stdlib.h> #include <SDL/SDL.h> void pause(void)

我正在学习使用SDL库。然而,在我面临的诸多问题中,有一个问题我在互联网上找不到解决办法。我使用
SDL\u SetVideoMode
设置视频模式特征,但在运行程序时没有出现新窗口。唯一发生的事情是,我的终端显示了一个奇怪的模式,但它看起来不像我应该拥有的窗口,即使它显示了,它也不会打开一个新窗口。这发生在我试图运行程序的shell窗口中

节目如下:

#include <stdlib.h>
#include <SDL/SDL.h>

void    pause(void)
{
    int     on = 1;
    SDL_Event event;

    while (on == 1)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                on = 0;
        }
    }
}

int     main(void)
{
    if (SDL_Init(SDL_INIT_VIDEO) == -1)
        return EXIT_FAILURE;
    else
    {
        SDL_SetVideoMode(1024, 576, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("SDL TEST", NULL);
        pause();
        SDL_Quit();
    }
    return EXIT_SUCCESS;
}
运行该程序的结果如下:


发生了什么事?为什么我没有一个新的空窗口,名为“SDL测试”?

看起来SDL库试图使用

首先尝试一下,如果您可以通过在shell中执行例如
xterm
来打开到XServer的连接。如果有效的话,试着从

SDL_VIDEODRIVER=x11 ./sdl1

强制使用x11视频驱动程序并查看其是否正常工作。

这完全没有意义。您没有执行正确的程序。谢谢您的宝贵意见。如果SDL2不存在,我不建议您使用SDL1。stableI遵循了此网站上的说明:loka.developpez.com/tutoriel/sdl/installation/linux,我发现它在过去11年中没有更新过!就像你说的,我一定安装了SDL的旧版本,这可能是我的程序无法运行的原因。。。我将搜索通过linux bash获取SDL2的方法。我已经通过命令
sudo apt get install libsdl2 dev
安装了SDL2,我在
usr/include/SDL2
中有所有的.h文件,并且我使用了头
#include
。但问题仍然存在,所以我想这不是版本问题。我的问题下面的答案让我觉得我的代码不是由正确的程序执行的。我不知道,这对我来说非常不清楚。我在shell中键入了“xterm”,它告诉我:@nounoursnoir好吧,这可能就是SDL选择libcaca而不是x11的原因。您必须修复环境才能使其正常工作。
export DISPLAY=:0
可能值得一试。我尝试了
export DISPLAY=:0
,然后再次尝试使用我的程序。好的是,它没有像我之前看到的那样出现奇怪的屏幕(你可以在原始问题的截图中看到)。糟糕的是,在等待1或2秒后,
SDL_Init
行执行segfault:(@nounoursnoir-Hm,你真的必须让xterm命令工作,那么你的SDL程序工作的可能性很大,在使用
export DISPLAY=:0
之后,我尝试了使用
SDL\u VIDEODRIVER=x11./sdl1
并且我的程序不再出错。问题是:我不知道发生了什么变化,我不知道这个命令是什么我只能告诉你我看到了什么…我想我应该提醒你注意的另一个细节是调用
SDL\u Init
失败:
(SDL\u Init(SDL\u Init\u VIDEO)==-1)
评估
为true
。。。
SDL_VIDEODRIVER=x11 ./sdl1