SFML和代码::块0xc00000be
SFML and Code::Blocks 0xc00000be
我刚刚开始在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-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
。
最好的方法是使用CMake编译SFML。
我不认为这是崩溃的原因,但您的绘图代码在事件循环中,这不应该发生。你会在window.clear()
之前加上那个右括号(}
)。
除此之外,问题似乎在你发布的消息来源之外。
编辑:
错误消息
在动态链接库libstdc++-6.dll中找不到过程入口点__gxx_personality_v0。
通常表示可执行文件以某种方式查找/加载了错误版本的库libstdc++-6.dll。原因可能是系统目录或应用程序目录中的不同版本。
要解决此问题,您必须查找加载的错误副本。你可以这样做,例如使用Dependency Walker。只需运行程序并拖动&将您的可执行文件放入其中。然后它会向您显示一个类似资源管理器的树,其中包含它试图加载的特定库。找到库文件,看看它是否正确。
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- SFML和代码::块0xc00000be
- OpenCV代码::Blocks:应用程序无法正确启动(0xc00000be)