调用 sf::Window::close 后 SFML 中的分段错误
Segmentation Fault in SFML After calling sf::Window::close
我正尝试在与 main() 不同的线程上 运行 SFML window。调用 sf::Window::close 不会立即导致任何问题,但是在 main() 结束时,可能当 UI 对象被破坏时,会发生分段错误。如果不调用 sf::Window::close,则不会发生分段错误。
我正在 运行安装完全更新的 Debian 10。
#include <thread>
#include <SFML/Graphics.hpp>
int main() {
sf::Window window(sf::VideoMode(500,500), "Test");
std::thread th(&sf::Window::close, &window);
th.join();
}
我发现了问题。在关闭另一个线程之前,您必须停用 window,就像这样。我最初在文档中错过了这一点。
#include <thread>
#include <SFML/Graphics.hpp>
int main() {
sf::Window window(sf::VideoMode(500,500), "Test");
window.setActive(false);
std::thread th(&sf::Window::close, &window);
th.join();
}
我正尝试在与 main() 不同的线程上 运行 SFML window。调用 sf::Window::close 不会立即导致任何问题,但是在 main() 结束时,可能当 UI 对象被破坏时,会发生分段错误。如果不调用 sf::Window::close,则不会发生分段错误。
我正在 运行安装完全更新的 Debian 10。
#include <thread>
#include <SFML/Graphics.hpp>
int main() {
sf::Window window(sf::VideoMode(500,500), "Test");
std::thread th(&sf::Window::close, &window);
th.join();
}
我发现了问题。在关闭另一个线程之前,您必须停用 window,就像这样。我最初在文档中错过了这一点。
#include <thread>
#include <SFML/Graphics.hpp>
int main() {
sf::Window window(sf::VideoMode(500,500), "Test");
window.setActive(false);
std::thread th(&sf::Window::close, &window);
th.join();
}