我开始学习 SFML,我想创建精灵来从文件加载图像,所以我只是按照教程做了显而易见的事情。
sf::Texture texture;
texture.loadFromFile("C:\image.png");
sf::Sprite sprite;
sprite.setTexture(texture);
window.draw(sprite);
当我启动程序时,我只是看到一个白屏和“itsprgps.exe 中 0x50CEDEDA (msvcr110.dll) 处未处理的异常:0xC0000005:访问冲突读取位置 0x00524000。”,控制台也充满了随机符号。我试图寻找一些信息,但我刚刚发现“如果纹理被破坏或移动到内存中的其他位置,精灵最终会得到一个无效的纹理指针”,这对某些人来说可能是显而易见的,但我是新手,他们不要给出任何有效的例子。
我正在使用 SFML 2.1 和 Visual Studio 2013
EDIT:
这是我的代码示例,没有我在尝试加载纹理之前绘制的所有形状:
包括“stdafx.h”
int main()
{
sf::RenderWindow window(sf::VideoMode(557, 500), "My window");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear(sf::Color(255, 255, 255));
sf::Texture texture;
texture.loadFromFile("C:\roads.png");
sf::Sprite sprite;
sprite.setTexture(texture);
window.draw(sprite);
window.display();
}
return 0;
}
我还意识到其他事情......我也无法加载字体,它发生了完全相同的事情,我想我知道为什么。当我开始该项目时,我添加了用于发布而不是调试的库(“sfml-system.lib;sfml-main.lib;sfml-graphics.lib;sfml-window.lib;”而不是“sfml-system-d.lib”)。 lib;sfml-main-d.lib;sfml-graphics-d.lib;sfml-window-d.lib;") 所以我认为这实际上可能是问题所在,所以我尝试解决它,但我遇到了另一种情况问题。
长话短说:我尝试了正确的调试和发布配置,但遇到了不同的错误,首先,我缺少 MSVCR110D.dll,所以出于好奇只是下载了它并将其放入调试文件夹中,现在我得到 0xc000007b 。我尝试了不同的配置,唯一有效的配置是使用发布库进行调试(到目前为止尝试加载纹理或字体时除外)。