首页 文章

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

提问于
浏览
1

以下代码给出了未捕获的异常(具体而言)

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 回答

  • 4

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

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

相关问题