2014-01-15 2 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: 0xC0000005: нарушение прав доступа при чтении по адресу 0x03BC1000.

Перевод следующий:

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

+2

Не могли бы вы вывести текст (можно выбрать, если есть) сообщения об ошибке/сбое? –

+1

«Функция loadFromFile иногда терпит неудачу без очевидной причины. Сначала проверьте сообщение об ошибке, напечатанное SFML в стандартном выпуске (проверьте консоль)». - Какое сообщение печатается? –

+0

Я не могу использовать 'sf :: err', программа вылетает точно на loadFromFile(), поэтому следующая строка не выполняется. Сообщение об ошибке/сбое выше. – Ivan

ответ

13

Моя проблема смешанная Отладка/выпуск, я использовал sfml-window.lib, но мне нужно использовать `sfml-window-d.lib '. Я не могу использовать библиотеку debug SFML, потому что я использую VC++ 2013 (v120, но SFML требует v110). Итак, я перекомпилировал официальную библиотеку, и это сработало!

+0

Вы должны отметить свой ответ как ответ - хотя технически это был мой ответ на форуме, ха-ха. : D – Lukas

+1

Лукас, спасибо! Это только ваш ответ. – Ivan

+0

У меня такая же проблема с шрифтами. Я использую VS 2010 - в режиме выпуска я думаю? (Как это проверить?) Я использую libs WITHOUT -d? Все компиляции и ссылки, но функция loadFromFile вызывает ту же ошибку - как я могу это исправить? – user3728501

Смежные вопросы