以下代码为我提供了未捕获的异常(具体为
)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!
答案 0 :(得分:4)
当您将调试库与发布模式混合或使用调试模式发布库时,会出现此问题。确保在处于调试模式时仅使用-d
后缀SFML库,而在处于发布模式时使用非后缀SFML库 - 如official tutorial中所述。
作为旁注,建议始终使用int main()
。如果您只想要一个没有命令提示符的窗口,那么您可以将子系统更改为窗口并链接到sfml-main
。