SFML不会在CodeBlocks 13.12中运行

时间:2014-03-13 03:58:09

标签: c++ runtime-error codeblocks sfml

我刚刚安装了最新版本的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)

有没有人知道为什么会发生这种情况或我如何解决它?

1 个答案:

答案 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