SFML和代码::块0xc00000be

SFML and Code::Blocks 0xc00000be

本文关键字:0xc00000be 代码 SFML      更新时间:2023-10-16

我刚刚开始在Windows7上使用Code::Blocks作为IDE开发SFML 2.1。我正在使用为MinGW编译的库。我遵循了如何在Code::Blocks中设置SFML的教程,但在运行程序时遇到了一个从未见过的错误:

The application was unable to start correctly (0xc00000be). Click OK to close the application.

到目前为止,我已经尝试过静态和动态链接SFML,但都没有成功。我尝试过同时运行调试模式和发布模式,每次都会产生相同的错误。每次执行程序时都会出现错误,但编译时不会出现错误。

是的,我确实有按正确顺序链接的库,是的,当我静态链接库时,我使用xxxx-sxxxx-d用于调试,xxxx-s-d用于静态链接调试。在撰写本文时,我大约在10个小时前刚刚获得了最新的SFML 2.1,所以除非SFML从那时起进行了更新,否则我将使用最新的版本。我还试着重建这个项目,但也没有修复。

然而,我确实尝试以不同的顺序重新排列库(首先是sfml-system,然后是sfml-window,然后是sfml-graphics;是的,我知道这是相反的顺序,但这只是为了测试),但它仍然产生了相同的错误。

源代码:

#include <SFML/Graphics.hpp>
int main() {
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Works!");
sf::CircleShape circle(50.f);
circle.setFillColor(sf::Color::Red);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(circle);
window.display();
}
return 0;
}

编辑:

半修复:如果我使用为TDM编译的SFML,那么程序运行时没有错误。但是,如果我使用MinGW库,我会得到错误:The procedure entry point__gxx_personality_v0 could not be located in the dynamic link library libstdc++-6.dll

最好的方法是使用CMake编译SFML。

我不认为这是崩溃的原因,但您的绘图代码在事件循环中,这不应该发生。你会在window.clear()之前加上那个右括号(})。

除此之外,问题似乎在你发布的消息来源之外。

编辑:

错误消息

在动态链接库libstdc++-6.dll中找不到过程入口点__gxx_personality_v0。

通常表示可执行文件以某种方式查找/加载了错误版本的库libstdc++-6.dll。原因可能是系统目录或应用程序目录中的不同版本。

要解决此问题,您必须查找加载的错误副本。你可以这样做,例如使用Dependency Walker。只需运行程序并拖动&将您的可执行文件放入其中。然后它会向您显示一个类似资源管理器的树,其中包含它试图加载的特定库。找到库文件,看看它是否正确。