我有以下代码:
#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");
更确切地说,程序在此行崩溃.
我的配置如下:
错误/崩溃消息如下:
Необработанное исключение по адресу 0x5007DEF8 (msvcr110.dll) в
SFML_ERROR.exe: 0xC0000005: нарушение прав доступа при чтении по
адресу 0x03BC1000.
翻译如下:
Unhandled exception at 0x5007DEF8 (msvcr110.dll) in
SFML_ERROR.exe: 0xC0000005: Access violation reading on
Address 0x03BC1000.
解决方法
我的问题是混合Debug / Release,我使用了sfml-window.lib,但我必须使用`sfml-window-d.lib’.我无法使用调试SFML库,因为我使用的是VC 2013(v120,但SFML需要v110).所以,我重新编译了官方库,它工作了!