【发布时间】:2018-01-02 04:54:08
【问题描述】:
我正在为 SDL2 中的游戏模拟器编写前端。当我尝试运行所选游戏时,我的程序编译并运行良好,但在 Linux (Xubuntu 16.04) 上除外。我收到一条消息“无法初始化 SDL。无法连接到 MIR 服务器。”我已经尝试过从我的程序中选择运行 MAME 模拟器,并尝试运行 Ubuntu 附带的 Mines 游戏。尝试从我的游戏启动器运行时,他们都给了我这个错误。然而,我可以从我的游戏启动器之外在同一台计算机上运行这两个,而不会出现问题。
There is an answer here 谈论设置 DISPLAY 环境变量。我的环境中已经设置了一个 DISPLAY 变量,它的值为 0.0 也许我的应用程序在显示器和/或 Mir 服务器上锁定了?如果是这样,我无法弄清楚或找出如何解决这个问题。我相信环境正在传递给已启动的程序,因为我在我的程序顶部附近有这个:
extern "C" {char **environ;}
然后调用我要启动的游戏:
int status = posix_spawn(&pid, "/NoQuarter/emulators/mame-177/mame64.linux", NULL, NULL, argv, environ);
(我决定硬编码路径和程序以用于测试目的,而不是在调试时想知道用于表示游戏名称的变量的确切值)。我自己没有填充环境变量,但我没有看到任何这样做的示例,所以我假设它是由我链接到的库之一或类似的东西完成的。
我在假全屏模式下运行我的程序,但也尝试了真全屏并得到相同的结果(即,我尝试了 SDL_WINDOW_FULLSCREEN 和 SDL_WINDOW_FULLSCREEN_DESKTOP)。同样的程序在 Windows 上运行良好,使用 Mingw、SDL2、与我在 Linux 上使用的相同版本的 MAME 和 CreateProcess() 命令。关于解决这个问题的任何想法?谢谢。
【问题讨论】: