【问题标题】:SFML won't run in CodeBlocks 13.12SFML 不会在 CodeBlocks 13.12 中运行
【发布时间】:2014-03-13 03:58:09
【问题描述】:

我刚刚安装了最新版本的 CodeBlocks(13.12 和 TDM-GCC-4.8.1),现在我的代码无法运行。在我拥有的旧版本中,一切都编译和运行完美无瑕,但现在,使用相同的代码,它编译但在运行时崩溃,说我的程序“已停止工作”,并返回 -1073741510 (0xC0000005)。

我在处理一个更复杂的程序时遇到了这个问题,所以我尝试运行 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)

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

【问题讨论】:

    标签: c++ runtime-error codeblocks sfml


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      相关资源
      最近更新 更多