2014-01-15 88 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