【发布时间】: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