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

问题描述 投票:0回答:1

问题描述

我正在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文件夹?

c++ linux image sfml clion
1个回答
1
投票

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

看看this question,在那里你可以找到描述两种方式的答案。

© www.soinside.com 2019 - 2024. All rights reserved.