SFML sf :: RenderWindow :: createWindow()崩溃程序

时间:2016-01-17 23:17:13

标签: crash window visual-studio-2015 sfml

所以我一直在学习C ++,我一直试图通过一些视频来学习一些SFML 2。起初我没有真正的问题,我使用MS VS2012,一切都很好。我开始使用MS VS2015社区,这一切都开始出错,我不明白为什么!

主要问题:

所有内容都会编译,但当我尝试使用sf :: RenderWindow :: createWindow()

时它会崩溃

错误消息:

我收到消息“SFML_Project.exe不再有效”, 我去调试它,它给了我以下信息:

抛出未处理的异常:读取访问冲突。 this-> _Ptr是0xCCCCCCCC。 如果存在此异常的处理程序,则可以安全地继续该程序。

它在这个函数上做了(一些我一无所知的SFML代码)

const facet *_Getfacet(size_t _Id) const
    {   // look up a facet in locale object
    const facet *_Facptr = _Id < _Ptr->_Facetcount
        ? _Ptr->_Facetvec[_Id] : 0; // null if id off end  <- ON THIS LINE OF CODE IT BREAKS
    if (_Facptr != 0 || !_Ptr->_Xparent)
        return (_Facptr);   // found facet or not transparent
    else
        {   // look in current locale
        locale::_Locimp *_Ptr = _Getgloballocale();
        return (_Id < _Ptr->_Facetcount
            ? _Ptr->_Facetvec[_Id]  // get from current locale
            : 0);   // no entry in current locale
        }
    }

在调用堆栈中给出的信息行

  

sfml-system-d-2.dll!std :: locale :: _ Getfacet(unsigned int _Id)Line 451 C ++

我的代码:

#include <iostream>
#include "SFML\Graphics.hpp"

int main()
{
    sf::RenderWindow window;
    window.create(sf::VideoMode(800, 800), "WindowName");

    sf::Texture texture;
    sf::Sprite sprite;
    texture.loadFromFile("Player.png");
    sprite.setTexture(texture);

    sf::Event eventHandler;
    while(window.isOpen())
    {
        while(window.pollEvent(eventHandler))
        {
            switch(eventHandler.type)
            {
            case sf::Event::Closed:
                window.close();
                break;
            }
        }

        window.clear();
        window.draw(sprite);
        window.display();
    }
}

SFML版本: Visual C ++ 14(2015) - 32位

项目属性:

调试 - &gt; C / C ++ - &gt;一般 - &gt;其他包含目录:

  • $(SolutionDir)/SFML-2.3.2/include

调试 - &gt;链接器 - &gt;一般 - &gt;其他图书馆馆目:

  • $(SolutionDir)/SFML-2.3.2/lib

调试 - &gt;链接器 - &gt;输入 - &gt;附加依赖项:

  • SFML-主d.lib
  • SFML窗口-d.lib
  • SFML-图形d.lib
  • SFML系统-d.lib
  • SFML-网络d.lib
  • SFML-音频d.lib

我尝试了什么:

我已经尝试将所有依赖项从sfml-XX-d.lib转换为sfml-XX.lib文件,这允许我创建一个窗口并将形状绘制到该窗口,但是当我尝试使用sf时:: Texture :: loadFromFile(“filename”)控制台命令窗口变成矩阵并开始发出哔哔声。

1 个答案:

答案 0 :(得分:0)

可能是因为你在图形库之前链接了窗口lib。

尝试向上移动图形库下的窗口库。

sfml-graphics-d.lib
sfml-window-d.lib
sfml-system-d.lib

如果它仍然崩溃,可能是因为你的sfml的dll与你当前的sfml版本不匹配。发生过一次,我下载了新版本的sfml而没有更新二进制文件。