SDL 2.0不会初始化。错误:“无法连接到Mir Server”

时间:2014-08-24 06:04:15

标签: sdl sdl-2

我正在运行Ubuntu 14.04,并使用Eclipse CDT。

在我的程序中,我正在尝试初始化SDL,如果它没有初始化然后输出错误,但SDL_GetError()返回“无法连接到Mir Server”。我确信SDL安装正确,因为我可以在另一个项目上成功初始化SDL。

这些是我正在使用的库:http://i.imgur.com/SS1mjzQ.png

#include <SDL2/SDL.h>
#include <iostream>

int main(int argc, char* args[]) {
  if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
    std::cout << SDL_GetError() << std::endl;
  }

  return 0;
}

3 个答案:

答案 0 :(得分:1)

bash $ export DISPLAY=:0

设置DISPLAY运行时环境变量为我修复了它 - 典型的X Windows损失,无法默认为本地显示器(专为远程显示设计),如果你去X11夏令营,你只知道它。 / p>

bash中的完整工作示例:

(cd /tmp && g++ -xc++ - -lSDL2 && (DISPLAY=:0 ./a.out; echo \$? = $?)) <<.
#include <SDL2/SDL.h>
#include <iostream>

int main() {
  if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
    std::cout << SDL_GetError() << std::endl;
    return 1;
  }
  return 0;
}
.

$? = 0

答案 1 :(得分:0)

您运行的环境是否有窗口系统?
当我运行使用Ubuntu 14.04在Travis CI上初始化SDL2的测试时,这个错误已经出现了。基于我从进一步测试和提示中收集到的内容,我在初始化SDL时通过谷歌搜索SDL_Init获得SDL_INIT_VIDEO {你隐含地使用{{1} }),它会尝试连接机器的窗口系统 所以也许试试:

SDL_INIT_EVERYTHING

然后使用以下命令初始化其他子系统:

SDL_Init(0)

如果你确实记住你必须退出你在这种情况下初始化的每个子系统,那只是技术上的。你会这样做:

SDL_InitSubSystem(SDL_INIT_EVERYTHING)

答案 2 :(得分:0)

当我使用gcc编译时,我遇到了这个错误。 当我用g ++编译它时修复了这个问题。 Lazy Foo tutorial还建议您使用g ++进行编译。

如果您遇到此问题,可以尝试使用g ++进行编译,看看是否可以解决问题。

相关问题