我刚刚安装了最新版本的CodeBlocks(13.12与TDM-GCC-4.8.1),现在我的代码不起作用。在我的旧版本中,所有内容都编译并运行完美,但现在,使用相同的代码,它编译但在运行时崩溃,说我的程序"已停止工作",并返回-1073741510( 0000005)。
我遇到了一个我一直在研究的更复杂的程序,所以我尝试运行SFML的示例,尝试隔离问题并且打破完全相同的方式,所以它似乎是要做的事情使用SFML,但我不明白是什么或为什么。
这是代码:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
这是调用堆栈:
#0 691C4AF9 sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int) () (D:\MyDocs\DOCUME~1\C__~1\SFML2~1.0TE\SFML2T~1\bin\Debug\sfml-window-2.dll:??)
#1 00401424 main() (D:\MyDocs\Documents\C++\SFML 2.0 Test\SFML 2 Test\main.cpp:5)
有没有人知道为什么会发生这种情况或我如何解决它?
答案 0 :(得分:2)
SFML是一个C ++库,因此每次切换编译器时,都需要recompile the library。 SFML提供的预编译二进制文件用于较旧版本的TDM,因此与TDM 4.8.1不兼容。随着您的发展时间越长,自己构建图书馆就会变得越来越重要,所以越早开始做得越好,加上 就越难。
作为个人注意事项:虽然我很欣赏TDragon的辛勤工作,但是GCC的TDM编译器change the default linking behavior非常不合适,因此打破了存在的每个构建脚本,除非它是TDM的specially modified。不幸的是Code :: Blocks社区doesn't care at all。因此,我认为有必要尽可能将人们指向MinGW Builds。