【问题标题】:SDL2 is not seeing X11/Video Device correctlySDL2 没有正确看到 X11/视频设备
【发布时间】:2021-01-14 02:48:58
【问题描述】:

(我知道有大量关于该主题的文档,但我要么缺乏经验,无法找到有效的文档,要么我遇到的问题与文档中的不同)

我正在尝试加载我在 Linux 上的 Mac 上编写的简单 SDL 包装器(Lubuntu 20.04,LXQt 0.14.1)。但是,当调用SDL_Init(SDL_INIT_VIDEO) 时,会生成以下SDL_Error() 返回语句:No available video device。我已经验证我的DISPLAY envvar 设置为:0(根据xterm 是正确的)并且我的SDL_VIDEODRIVER 未设置。

将我的 SDL_VIDEODRIVER 设置为 x11 会在初始化 x11 not available 时触发此替代错误。

我很困惑,我可以从中得出的唯一可能的结论是,我不知何故没有使用 x11,或者正在处理这个错误。

这是触发此错误的最小示例:

#include <SDL2/SDL.h>

int main() {
    SDL_Init(SDL_INIT_VIDEO);
    printf("%s\n", SDL_GetError());
}

非常感谢我能得到的任何帮助!

我正在为 SDL2 使用 libsdl2-dev apt 包

【问题讨论】:

  • SDL_Init 返回了什么?
  • @user253751 -1 在所有情况下
  • @TTG 您是从报告DISPLAY 的同一个 xterm 运行它,并且您可以启动例如glxinfo 或其他 xterm 来自?或者是没有连接到您的 x11 服务器的单独外壳(例如 ctrl-alt-f1 或远程 ssh 会话上的虚拟 tty)?你确定你正在运行 x11 而不是例如韦兰 (ps aux|grep X)?
  • @keltar 它是 X11,因为 xorg 进程正在运行。我正在从正确的终端运行,是的,并且在本地机器上(不是 ssh 或其他)
  • @TTG 这样您就可以从终端启动第二个xterm,但不能从您的测试程序启动?这很奇怪。 ldd ./your_program 的输出是什么?是否有任何其他 SDL2 程序有效(例如 supertux2)?您能否自己构建 SDL 并尝试使用它,最好启用调试符号?

标签: c ubuntu sdl x11


【解决方案1】:

原来我在编译期间忘记链接 X11 导致 SDL_VIDEO 无法初始化。这已通过使用 -lX11 解决。

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多