2014-01-15 101 views
6

我有以下代碼:SFML錯誤loadFromFile()

#include <SFML\Graphics.hpp> 
#include <iostream> 

int main(int argc, char* argv[]) 
{ 
    sf::RenderWindow window(sf::VideoMode(640, 480), "SFML Render"); 
    sf::Image image; 
    sf::Texture texture; 
    sf::Sprite sprite; 

    image.loadFromFile("D:/Project/Sprites/bt1.png"); 
    texture.loadFromImage(image); 
    sprite.setTexture(texture); 
    sprite.setPosition(100.0f, 100.0f); 

    sf::Event event; 
    while (window.isOpen()) 
    { 
     while (window.pollEvent(event)) 
     { 
      if (event.type == sf::Event::Closed) 
       window.close(); 
     } 

     window.clear(); 
     window.draw(sprite); 
     window.display(); 
    } 

    return 0; 
} 

這很簡單,但沒有奏效。

我嘗試使用各種不同的路徑:

D:/Project/CPP/Game_Engine/Debug/sprites/first.bmp 
D:\\Project\\CPP\\Game_Engine\\Debug\\sprites\\first.bmp 
d:\\Project\\CPP\\Game_Engine\\Debug\\sprites\\first.bmp 

然後我試着用不同的文件:

D:/Project/Sprites/bt.png 
D:/Project/Sprites/anim.bmp 
D:/Project/Sprites/boy.jpg 

編譯器在以下行表示:

image.loadFromFile("D:/Project/Sprites/bt1.png"); 

更確切地說,程序在這一行上崩潰。 enter image description here

我的配置如下: enter image description here

錯誤/崩潰消息如下:

Необработанноеисключениепоадресу0x5007DEF8(msvcr110.dll)в SFML_ERROR.exe:0000005: нарушениеправдоступапричтениипо адресу0x03BC1000。

翻譯如下:0000005:訪問衝突閱讀 地址0x03BC1000在0x5007DEF8(msvcr110.dll)在 SFML_ERROR.exe

未處理的異常。

+2

請問您可以發佈錯誤/崩潰消息的文本(可選,即)嗎? –

+1

「loadFromFile函數有時會失敗,沒有明顯的原因,首先檢查標準輸出中SFML打印的錯誤消息(檢查控制檯)。」 - 正在打印什麼信息? –

+0

我不能使用'sf :: err',程序在loadFromFile()上崩潰,因此下一行不會執行。錯誤/崩潰消息在上面。 – Ivan

回答

13

我的問題是混合調試/發佈,我用sfml-window.lib,但我必須使用`sfml-window-d.lib'。我無法使用調試SFML庫,因爲我使用VC++ 2013(v120,但SFML需要v110)。所以,我重新編譯了官方庫,它工作正常!

+0

你應該將你的回答標記爲答案 - 雖然從技術上說這是我在論壇上的回答,哈哈。 :D – Lukas

+1

盧卡斯,謝謝!它只是你的答案。 – Ivan

+0

我有與字體相同的問題。我正在使用VS 2010 - 在發佈模式,我認爲? (我如何檢查?)我正在使用libs而沒有-d選項?一切都編譯和鏈接,但loadFromFile函數導致相同的錯誤 - 我該如何解決這個問題? – user3728501