SFML和Code :: Blocks 0xc00000be

时间:2014-01-06 08:49:25

标签: c++ codeblocks sfml

我刚刚开始使用Code :: Blocks作为我的IDE在Windows 7上使用SFML 2.1进行开发。我正在使用为MinGW编译的库。我按照教程了解了如何在Code :: Blocks中设置SFML,但是我遇到了一个我以前从未见过的错误:

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

到目前为止,我已经尝试过静态和动态链接SFML都无济于事。我已经尝试运行调试模式和释放模式,每次也产生相同的错误。每次执行程序时都会发生错误,但编译时没有错误。

是的,我确实按正确的顺序链接了库,是的,当我静态链接库和xxxx-s进行调试时,我正在使用xxxx-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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我不认为这是导致崩溃的原因,但您的绘图代码是在事件循环中,这不应该发生。您将}之前的结束括号(window.clear())抬起来。

除此之外,问题似乎在您发布的来源之外的某处。

编辑:

错误消息

  

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

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

要解决此问题,您必须追踪正在加载的错误副本。你可以这样做,例如与Dependency Walker。只需运行程序并将可执行文件拖放到其中即可。然后它会向您展示一个像树一样的资源管理器,它会尝试加载特定的库。找到库文件,看看它是否正确。