【问题标题】:SFML projects won't run after updating MinGW from 4.4.1 to 4.7.1将 MinGW 从 4.4.1 更新到 4.7.1 后,SFML 项目将无法运行
【发布时间】:2013-10-05 17:02:58
【问题描述】:

所以今天早上我将我的 MinGW 编译器升级到了 4.7.1(我相信是从 4.​​4.1),并且一直在尝试让旧项目再次正常构建和运行。然而,我的努力遇到了障碍,现在,每当我尝试编译使用 SFML 库的项目时,都会收到以下错误:

无法在动态链接库 libstdc++-6.dll 中找到过程入口点 __gxx_personality_v0

现在我知道这个问题has been discussed before,但不幸的是,定义void *__gxx_personality_v0; 的建议hacky-fix 对我没有任何好处,我检查了我是否不小心使用了GCC,但是CodeBlocks 有C++ 编译器设置为 MinGW 的 G++,而不是 GCC(在 Settings->Compiler->Toolchain Executables->Program Files,我有 mingw32-g++.exe 作为 C++ 编译器)。所以这似乎不是问题。

我正在尝试编译的整个程序是example from the SFML website

#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;
}

目前,我尝试运行的每个 SFML 项目都会出现此问题,但小型非 SFML 项目似乎运行良好。

我可以尝试什么来解决这个问题?

【问题讨论】:

  • 我只是发布一个答案,但为了真正找到问题,看看你的项目目录结构和每个目录包含的文件会很有趣。

标签: c++ g++ mingw codeblocks sfml


【解决方案1】:

它需要更多信息,但让我在这里猜测一下。是否有可能以某种方式,您仍在链接 libstdc++-6.dll 文件的旧(或其他版本)?

dll 在你的 EXE 旁边吗?您是否尝试过使用您正在使用的编译器提供的版本?在那种情况下,libstdc++-6.dll 文件位于 bin 目录下的 MinGW。

【讨论】:

  • 我实际上通过卸载我的编译器/IDE/库并重新安装它们来解决这个问题。我仍然不知道到底发生了什么或为什么它不起作用。实际上,DLL 应该在 EXE 旁边。我认为这个问题可能与 SFML 和 MinGW 的 DW2 和 SJLJ 版本之间的混淆有关,尽管我认为我有兼容的版本。
猜你喜欢
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 2022-07-22
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多