我在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运行没有任何问题。我试着寻找任何解决方案,但我找不到任何有过类似问题的人,我可以从中得出一个可行的解决方案。
经过一番研究,我找到了解决办法。
sudo apt install xorg-dev
根据我的发现,SDL2需要这个库来开发。Crostini使用x11窗口服务器来运行Linux GUI应用程序,因此您需要这个开发包是有道理的。