我刚刚开始使用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
。
答案 0 :(得分:4)
最好的方法是使用CMake编译SFML。
答案 1 :(得分:1)
我不认为这是导致崩溃的原因,但您的绘图代码是在事件循环中,这不应该发生。您将}
之前的结束括号(window.clear()
)抬起来。
除此之外,问题似乎在您发布的来源之外的某处。
编辑:
错误消息
无法在动态链接库libstdc ++ - 6.dll中找到过程入口点_gxx_personality_v0。
通常表示可执行文件以某种方式查找/加载错误版本的库 libstdc ++ - 6.dll 。原因可能是系统目录或应用程序目录中的不同版本。
要解决此问题,您必须追踪正在加载的错误副本。你可以这样做,例如与Dependency Walker。只需运行程序并将可执行文件拖放到其中即可。然后它会向您展示一个像树一样的资源管理器,它会尝试加载特定的库。找到库文件,看看它是否正确。