VS2012 Debug中SFML变量周围的堆栈损坏

时间:2014-04-17 01:06:58

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

我正在使用Visual Studio 2012.在调试模式下编译时,以下代码会导致错误

  

运行时检查失败#2 - 变量'line'周围的堆栈已损坏。

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

int main()
{
  std::cout << "Please ignore this box\n";

  sf::Font font;

  if (!font.loadFromFile("font.ttf"))
    std::cout << "Font not loaded\n";

  sf::RenderWindow window(sf::VideoMode(1000, 800),
                          "Test Window",
                          sf::Style::Titlebar | sf::Style::Close);

  if (!window.isOpen())
    std::cout << "Problem creating window\n";

  while (window.isOpen()) {
    sf::Event event;

    while (window.pollEvent(event)) {
      if (event.type == sf::Event::Closed)
        window.close();
    }

    window.clear(sf::Color::Black);

    sf::RectangleShape line(sf::Vector2f(2, 750));
    line.setFillColor(sf::Color::White);
    line.setPosition(700, 25);

    window.draw(line);
    window.display();
  }

  return 0;
}

在发布模式下编译解决了这个问题,但我想知道导致这个问题的原因以及是否有某种方法可以解决它。

感谢。

1 个答案:

答案 0 :(得分:1)

引用the official tutorial的红色部分:

  

链接到与配置匹配的库非常重要:&#34; sfml-xxx-d.lib&#34; for Debug,&#34; sfml-xxx.lib&#34;发布。糟糕的混合可能会导致崩溃。