c ++ - SFML loadFromFile fejl

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger CodeBlocks 16.01 og SFML GCC 4.9.2 TDM (SJLJ) - 32-bit på Windows 7
Kun loadFromFile virker ikke, og jeg har ingen idé om, hvad jeg skal gøre.
Jeg forsøgte at geninstallere CodeBlocks, prøvede andre versioner af sfml, men intet fungerede. Jeg er lidt ny til SFML og det er virkelig frustrerende.


#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;
}


fejl:


-defineret reference til `sf :: Texture :: loadFromFile (std :: streng const & ;, sf :: Rect const &)'


-ror: ld returnerede 1 exit status

Bedste reference


Stien du giver til loadFromFile i


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


er en relativ -sti. Det betyder, at det vil blive løst i forhold til hvad din nuværende arbejdsmappe (se op cwd()) er.


Du har to (nemme) måder at løse dit problem på (der er andre, men de er sværere).


1) Angiv den fulde, absolutte sti til ressourcen i opkaldet til loadFromFile - som tex.loadFromFile("C:/foo/bar/baz.png"). Dette er selvfølgelig ikke attraktivt af flere grunde, først og fremmest at dit program kan installeres til en anden placering.


2) Hold dig til at bruge en relativ sti, men sørg for, at du ved, hvad det er i forhold til ved at ændre dine programkataloger til en kendt placering (sandsynligvis i forhold til placeringen af ​​den eksekverbare) ved opstart.