SFML-无法加载图像-无法打开文件-LINUX

时间:2019-02-09 15:39:27

标签: c++ linux image sfml clion


问题描述

我在 ubuntu (开发团队)上开发项目,但是我将发行版更改为 xubuntu ,并向其中克隆了相同的存储库。不幸的是,我包含在项目中的每个图像都会产生此运行时错误:

Failed to load image "image.png". Reason: Unable to open file

SFML已正确安装,因为我已使用SFML Site中的标准程序对其进行了检查。我在ubuntu上没有那个问题。

我的尝试

我认为文件的权限存在问题。因此,我创建了示例项目(如下所示),添加了 player.png ,并且得到了相同的错误。所以我在终端中使用了该命令:

chmod a+w player.png

它不能解决问题。我是Linux新手,所以也许还有更多事情要做,但我不知道。我也尝试过从本网站和SFML论坛中使用其他方法,但这对我没有帮助。
我也尝试加载其他图像,但也无法正常工作。

代码

我创建了示例代码来查找问题。它仅是SFML Site中的修改示例。

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(400, 400), "SFML works!");
    sf::Texture t;
    t.loadFromFile("player.png");
    sf::Sprite sprite;
    sprite.setTexture(t);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(sprite);
        window.display();
    }
    return 0;
}

解决方案和另一个问题:

有趣的是

    t.loadFromFile("../player.png");

解决了问题。 默认情况下,sfml期望图像位于cmake-build-debug文件夹中...
如何向我的项目而不是cmake文件夹添加默认目录?

1 个答案:

答案 0 :(得分:1)

您正在寻找一个更改当前工作目录的选项。可以使用CLion或CMake来完成。

看看this question,您可以在其中找到描述两种方式的答案。