【问题标题】:SFML - failed to load image - unable to open file - LINUXSFML - 无法加载图像 - 无法打开文件 - LINUX
【发布时间】:2019-07-03 14:29:12
【问题描述】:


问题描述

我在 ubuntu (clion ide) 上开发我的项目,但我将分发更改为 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 文件夹?

【问题讨论】:

  • 我想你也在 xubuntu 上使用 CLion?也许添加clion 标签。这有帮助吗? stackoverflow.com/a/32535461/2836621
  • 我一回到家就试试@MarkSetchell,谢谢你的链接
  • 您必须更改 CLion 中的工作目录。你可能想看看这个问题stackoverflow.com/questions/25834878/…
  • @Unterfliege - 你说得对 - 更改目录有效!你能在答案中写同样的话吗?我会把它标记为最好的。

标签: c++ linux image sfml clion


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多