内存位置的std :: length_error使用SFML RenderWindow时

时间:2015-04-08 14:11:25

标签: c++ sfml

我正在为我的项目使用 SFML ,我目前正在关注该网站上的教程。

目前,我只需使用以下代码(直接从教程中粘贴)创建 RenderWindow 的第一步:

#include <SFML/Graphics.hpp>
#include <SFML/Graphics/RenderWindow.hpp>

int main()
{
    // create the window
    sf::VideoMode vm (800, 600);
    sf::RenderWindow window(vm, "My window");

    // run the program as long as the window is open
    while (window.isOpen())
    {
        // check all the window's events that were triggered since the last iteration of the loop
        sf::Event event;
        while (window.pollEvent(event))
        {
            // "close requested" event: we close the window
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // clear the window with black color
        window.clear(sf::Color::Black);

        // draw everything here...
        // window.draw(...);

        // end the current frame
        window.display();
    }

    return 0;
}

它编译得很好,但是当我运行它时,我得到以下异常:

First-chance exception at 0x76BFC42D in OpenGlTest.exe: Microsoft C++ 
exception: std::length_error at memory location 0x0046F754.    

我尝试调试并将std :: length_error跟踪到RenderWindow构造函数:

sf::RenderWindow window(vm, "My window");      

我对c ++和OpenGL缺乏经验,所以我不知道如何继续进行,它不会让我进入构造函数来看看发生了什么,它只是立即抛出异常。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我想我发现了这个问题。我不确定这是修复还是运气,但如果在使用Visual C ++时链接到sfml-xxxx.lib而不是sfml-xxxx-d.lib,则显然会发生崩溃。它似乎在这种变化之后起作用。

答案 1 :(得分:0)

我不是SFML的专家,但是当你像这样的窗口,有窗口按钮,它们一起使用超过10个像素。

您是否尝试过增加尺寸? 尝试使用200,就像教程一样。