c++ SDL2无法在Crostini ChromeOS上初始化

u3r8eeie  于 2023-04-01  发布在  其他
关注(0)|答案(1)|浏览(225)

我正在ChromeOS 111.0.5563.100上运行Debian 10 Bullseye Crostini虚拟机。下面是我的SDL2代码...

#define SDL_MAIN_HANDLED
#include <SDL2/SDL.h>

int main(int argc, char *argv[])
{
    bool rungame = true;

    if (!SDL_Init(SDL_INIT_VIDEO))
    {
        perror("Failed to initialize SDL");
        return -1;
    }
    
    SDL_Window *window = SDL_CreateWindow(
        "Dungeoneer",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        SCR_W,
        SCR_H,
        SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI
    );
    if (window == NULL)
    {
        perror("SDL Window failed to initialize");
        return 1;
    }

    SDL_Renderer *render = SDL_CreateRenderer(
        window,
        -1,
        SDL_RENDERER_ACCELERATED
    );
    if (render == NULL)
    {
        perror("SDL Renderer failed to initialize");
        return 2;
    }

    SDL_Event event;
    while (rungame)
    {
        SDL_SetRenderDrawColor(render, 0, 0, 0, 255);
        SDL_RenderClear(render);
        
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
                case SDL_QUIT:
                    return 0;
                    break;
            }
        }

        SDL_RenderPresent(render);
    }

    return 0;
}

我没有得到任何编译错误或警告。但是当我执行用这个命令收到的返回的二进制文件时...

g++ main.cpp -o main.out -Wall -lm -lSDL2

我得到这个结果...

Failed to initialize SDL: Resource temporarily unavailable

有趣的是,PyGame运行时没有任何问题。我试图寻找任何解决方案,但我找不到任何经历过类似问题的人,我可以从中得出可行的解决方案。

3duebb1j

3duebb1j1#

经过进一步的研究,我找到了解决方案。

sudo apt install xorg-dev

从我发现的情况来看,SDL2需要这个库才能被开发。Crostini使用x11窗口服务器来运行Linux GUI应用程序,所以你需要这个开发包是有道理的。

相关问题