SFML - не удалось загрузить изображение - не удается открыть файл - LINUX - PullRequest
0 голосов
/ 09 февраля 2019


Описание проблемы

Я разрабатывал свой проект на 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 сайта .

#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 голосов
/ 13 февраля 2019

Вы ищете возможность изменить текущий рабочий каталог.Это можно сделать с помощью CLion или CMake.

Взгляните на этот вопрос , где вы можете найти ответы, которые описывают оба способа.

...