SFML(32位VS12) - SFML.exe中0x701ADEF8(msvcr110.dll)的未处理异常:0xC0000005:访问冲突读取位置0x0526。 LoadFromFile

时间:2013-11-26 04:07:35

标签: c++ visual-studio-2012 textures sprite sfml

以下代码为我提供了未捕获的异常(具体为

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 个答案:

答案 0 :(得分:4)

当您将调试库与发布模式混合或使用调试模式发布库时,会出现此问题。确保在处于调试模式时仅使用-d后缀SFML库,而在处于发布模式时使用非后缀SFML库 - 如official tutorial中所述。

作为旁注,建议始终使用int main()。如果您只想要一个没有命令提示符的窗口,那么您可以将子系统更改为窗口并链接到sfml-main