以下代码给出了未捕获的异常(具体而言)
txtr.loadFromFile("C:/Users/kidz/Documents/Visual Studio 2012/Projects/SFML/Debug/chessboard.gif");
):“SFML.exe中0x701ADEF8(msvcr110.dll)处的未处理异常:0xC0000005:访问冲突读取位置0x05260000 . ”
int _tmain(int argc, wchar_t* argv[]) {
sf::RenderWindow window(sf::VideoMode(512, 512), "ChessPlusPlus", sf::Style::Close);
sf::Sprite chessboard;
sf::Texture txtr;
txtr.loadFromFile("C:/Users/kidz/Documents/Visual Studio 2012/Projects/SFML/Debug/chessboard.gif");
chessboard.setTexture(txtr);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear();
window.draw(chessboard);
window.display();
}
getwchar();
return 0;
}
此外,在程序调试期间,一堆随机ASCII字符被输出到控制台上(有时甚至是个人文件,如散文等......) . 然后,控制台变为空白(空字符)并抛出异常 .
有一次,我能够暂停程序并一直向上滚动它说:“无法打开文件'chessboard.gif(单词中有一些随机的ASCII字符)'”然后是长字符的ASCII字符 .
SFML有问题还是我做错了什么?我知道SFML文档说有时文件可能无法加载并抛出异常,但在这种情况下,它会变得疯狂 . 另外,我随机放了一个不存在的文件名,但仍然发生同样的事情,而不是抛出一个未找到文件的异常 .
我在Orwell Dev-C上尝试了相同的代码,它只返回一个白色框,图像应该是,并在文件不存在时返回异常 .
一些图片:
http://i.stack.imgur.com/gq420.png
http://i.stack.imgur.com/Os8jw.png
我很乐意提供任何额外的信息 .
谢谢,
Usandfriends!
1 回答
当您将调试库与发布模式混合或使用调试模式发布库时,会出现此问题 . 确保在处于调试模式时仅使用
-d
后缀SFML库,而在处于释放模式时使用非后缀SFML库 - 如official tutorial中所述 .作为旁注,建议始终使用
int main()
. 如果您只想要一个没有命令提示符的窗口,那么您可以将子系统更改为窗口并链接到sfml-main
.