SFML - RenderWindow运行时错误包含所有内容

时间:2016-12-30 22:17:41

标签: c++ visual-studio visual-studio-2012 sfml

对于我从SFML站点抓取的示例代码到目前为止所添加的几乎所有对象(sf :: Color,sf :: Image,sf :: Texture等),都会抛出异常一旦我运行它,达到以下协议:

  

gameboiss.exe中0x61C71B86(sfml-system-2.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000074。

出于某种原因,它引用了RenderWindow行。如果我删除引用这些对象的所有行,它将起作用。即使我只留下一行创建变量(即sf :: Texture纹理),仍会抛出异常。我在调试中查看当地人/汽车时尝试过多种方法,但它似乎没什么用呢。

我正在使用Visual Studio 2012,任何帮助都会受到关注。下面是代码。谢谢:))

#include <iostream> #include "SFML/Window.hpp" #include "SFML/Graphics.hpp" #include "SFML/System.hpp" int main(){ sf::RenderWindow window(sf::VideoMode(200,200), "game boi"); sf::CircleShape shape(100.f); //source of error sf::Texture texture; texture.loadFromFile("char\\spartapix.png"); /*if(!hero.loadFromFile("char\\spartapix.png")){ std::cerr << "Error: sprite not loaded.\n"; return 1; }*/ //sf::Image background; //if (!background.loadFromFile("background.jpg")) //return -1; shape.setFillColor(sf::Color::Blue); sf::Vector2i pos; while (window.isOpen()){ sf::Event event; while (window.pollEvent(event)){ if (event.type == sf::Event::Closed) window.close(); if (event.type == sf::Event::GainedFocus) std::cout << "playing"; if (event.type == sf::Event::LostFocus) std::cout << "notplaying\n"; if (event.type == sf::Event::MouseButtonPressed){ sf::Vector2i pos = sf::Mouse::getPosition(window); std::cout << pos.x << " " << pos.y << std::endl; } if (event.type == sf::Event::KeyPressed){ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){ } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){ } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)){ window.close(); } } } window.clear(); window.draw(shape); window.display(); } return 0; } <code>

1 个答案:

答案 0 :(得分:0)

我同意RetiredNinja上面的评论:如果一旦你创建了渲染窗口就会发生这种情况,那么它很可能是一些STL版本差异(来自传递的字符串;因为sf::String sfml-system )的一部分,通常是混合版本时的情况(Visual Studio版本或发布/调试版本)。

您确定自己选择了correct download from SFML's download page吗?作为替代方案,您可以尝试从official repository下载和编译SFML。