SFML 2.1 and Codeblocks Error: sfml-graphics-2.dll is missing from your computer

SFML 2.1 and Codeblocks Error: sfml-graphics-2.dll is missing from your computer

我刚刚开始使用 C++ 和 SFML,最终 运行 一切正常。在出现未定义引用错误之前,我意识到我一直在下载错误类型的 SFML,得到的是 SJLJ 而不是 DW2。问题已解决,但已被另一个问题取代;现在每当我 运行 一个 SFML 程序时,它都会打开一个小的 windows:

它说:

The program can't start because sfml-graphics-2.dll is missing from your computer. Try reinstalling the program to fix this problem.

然后当您按"Ok"或关闭window时,程序将停止运行。不要混淆:程序从未打开,但在控制台上打开了。

这是直接从代码块教程站点复制粘贴的代码(可能没用):

#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-graphics-2.dll(连同您使用的任何其他 SFML 子系统的 dll 文件)放在与您的可执行文件相同的目录中。

我遇到了类似的问题。我的错误是当我在编译器设置中链接库时忘记添加后缀“-s-d”。这个结尾可以让编译器和调试器正常运行。

SFML > bin 主目录复制所有 dll 文件并将它们粘贴到您的项目文件夹中。在我的例子中是 C:\Users\myname\Documents\Visual Studio 2017\SFML\SFML

如果您想要 运行 只需 exe 文件。将所有 dll 文件放在与主 exe 文件相同的目录中。

最佳选择是从 SFML-2.4.2 > bin 复制所有 .dll 文件。然后将它们传递到 C: > Windows > System32 文件夹。这就是您需要做的全部。 然后 运行 你的程序。 你将能够运行它。