【问题标题】:SFML sf::RenderWindow::createWindow() crashes programSFML sf::RenderWindow::createWindow() 使程序崩溃
【发布时间】:2016-04-23 01:08:54
【问题描述】:

所以我一直在学习 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) 第 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 位

项目属性:

调试 -> C/C++ -> 常规 -> 附加包含目录:

  • $(SolutionDir)/SFML-2.3.2/include

调试 -> 链接器 -> 常规 -> 附加库目录:

  • $(SolutionDir)/SFML-2.3.2/lib

调试->链接器->输入->附加依赖:

  • sfml-main-d.lib
  • sfml-window-d.lib
  • sfml-graphics-d.lib
  • sfml-system-d.lib
  • sfml-network-d.lib
  • sfml-audio-d.lib

我的尝试:

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

【问题讨论】:

    标签: crash window visual-studio-2015 sfml


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好像不是,我试过改变 d.lib 的位置,但没有什么不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多