SFML loadFromFile ошибка - PullRequest
       23

SFML loadFromFile ошибка

0 голосов
/ 27 апреля 2018

Я использую CodeBlocks 16.01 и SFML GCC 4.9.2 TDM (SJLJ) - 32-разрядный в Windows 7 Только loadFromFile не работает, и я понятия не имею, что делать. Я пытался переустановить CodeBlocks, пробовал другие версии sfml, но ничего не получалось. Я новичок в SFML, и это действительно расстраивает.

#include <iostream>
#include<string>
#include <SFML/Graphics.hpp>


using namespace sf;
using namespace std;

int changeX = 0;
int changeY = 0;
int rot=0;

int main()
{
bool fscreen;
fscreen=false;
sf::Texture tex;
Sprite sprite;
RenderWindow window(VideoMode(640, 480,16), "SFML works!", Style::Default);
int direction=1,shiftX=10;

while(window.isOpen())
{
    Event event;
    while(window.pollEvent(event))
    {
        switch(event.type)
        {
        case Event::Closed:
            window.close();
            break;

        case Event::KeyPressed:
            if(event.key.code == Keyboard::Escape)
                window.close();
            if(event.key.code == Keyboard::F12)
            {
                fscreen = !fscreen;
                window.close();
                window.create(VideoMode(1920,1080,16), "SFML Test", (fscreen ? Style::Fullscreen : Style::Resize));
            }
            if (event.key.code==Keyboard::A)
                {
                changeX = -5;
                rot = -5;
                }
            else if (event.key.code==Keyboard::D)
                {
                changeX = 5;
                rot =5;
                }
                else
                {
                changeX = 0;
                }
            if (event.key.code==Keyboard::W)
                {
                changeY = -5;
                rot = 0;
                }
            else if (event.key.code==Keyboard::S)
                {
                changeY = 5;
                rot = 0;
                }
            else
                {
                changeY = 0;
                }
            break;
        }

    tex.loadFromFile("img\\obraz.png");

    sprite.move(changeX, changeY);
    sprite.setOrigin(100, 100);
    Vector2f origin = sprite.getOrigin();
    sprite.rotate(rot);
    sprite.setTexture(tex);
    window.clear();
    window.draw(sprite);
    window.display();
    }
}
return 0;
}

Ошибка:

-неопределенная ссылка на `sf :: Texture :: loadFromFile (std :: string const &, sf :: Rect const &) '

-error: ld вернул 1 статус выхода

1 Ответ

0 голосов
/ 27 апреля 2018

Путь, который вы даете loadFromFile в

tex.loadFromFile("img\\obraz.png");

- это относительный путь. Это означает, что он будет разрешен относительно вашего текущего рабочего каталога (посмотрите cwd()).

У вас есть два (простых) способа решения вашей проблемы (есть и другие, но они сложнее).

1) указать полный, абсолютный путь к ресурсу при вызове loadFromFile - как tex.loadFromFile("C:/foo/bar/baz.png"). Это явно не привлекательно по нескольким причинам, в первую очередь из-за того, что ваша программа может быть установлена ​​в другом месте.

2) При запуске придерживайтесь относительного пути, но убедитесь, что вы знаете его значение, изменив рабочий каталог программ на какое-то известное местоположение (возможно, относительно расположения исполняемого файла) при запуске.

...