c++ - 将 MinGW 从 4.4.1 更新到 4.7.1 后,SFML 项目将无法运行

标签 c++ g++ mingw codeblocks sfml

因此,今天早上我将我的 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(在设置->编译器->工具链可执行文件->程序文件下,我有 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 项目似乎运行良好。

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

最佳答案

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

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

关于c++ - 将 MinGW 从 4.4.1 更新到 4.7.1 后,SFML 项目将无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083955/

相关文章:

C++ 加载和存储优化和堆对象

c++ - 如何使用FreeImage_Unload(),不丢失图像数据

c++ - 找到 g++ 使用的 STL header 的路径

c++ - 在 if 条件下检测 "="而不是 "=="拼写错误

c++ - g++ 4.9.0 允许我们使用带有布局分配的操作符delete[](void*, size_t)

c++ - 应用程序启动后如何隐藏命令提示符?

c++ - std::bind 无法在 MSVC 上使用 std::atomic_bool& 进行编译

c++ - 从 QAbstractTableModel 派生类中删除行不起作用,为什么?

javascript - Git Shell 中的 Meteor (mingw)

MinGW 未找到 C++ std::vector.data