我尝试将我的SFML项目(我在PC上的Visual Studio中开发)移植到使用Eclipse的Linux上。最后一切正常,除了std :: thread。我只是将它用于一个简单的渲染线程,代码在Windows上的Visual Studio中工作。但是当我尝试运行代码时:
std::thread renderThread(render);
在Eclipse中的Linux上,有一个错误:
[xcb]出队时队列中的未知请求
[xcb]很可能这是一个多线程客户端,并且XInitThreads没有被称为 [xcb]流产,对不起。
即使我在创建Thread之前添加了“XInitThreads()”调用,启动后几秒钟也会显示相同的错误消息。
我已经链接了pthread库并将“-pthread”添加到编译器选项中。
提前感谢所有建议和各种帮助。
修改
代码段:
XInitThreads();
sf::ContextSettings settings;
settings.depthBits = 32;
settings.stencilBits = 32;
window.create(sf::VideoMode(1120, 630), "TITLE", sf::Style::Default, settings);
window.setVerticalSyncEnabled(true);
window.clear(COLOR);
window.display();
initStartup(); //loading Resources (.png, font...)
startscreen->phaseStarted = myClock.getElapsedTime().asMilliseconds();
window.setActive(false);
sf::Thread renderThread(render);
renderThread.launch();`
编辑2:
我注释掉了我的事件处理循环while (window.pollEvent(event)) {
和一个sf::Mouse::getPosition(window)
电话
错误消失了。