SFML(C ++)创建窗口时崩溃? [SFML:1.6,CB:12.11]

时间:2013-02-16 01:10:34

标签: c++ windows codeblocks sfml

我开始使用SFML和C ++创建游戏。但是,我有一个问题。我有基本的骨架类代码,但由于某种原因,当我创建一个窗口(sf :: Window)时,我立即崩溃!此代码不包含任何事件检查代码,但它确实存在并且仍然崩溃;此外,显然,由于缺乏事件检查,它应该需要几秒钟才能崩溃。当然,一旦我看到窗口,我就会添加它。

#include <iostream>
#include <windows.h>
#include <SFML/Window.hpp>
#include "GameBase.h"
#include "Character.h"
#include "GameStart.h"

using namespace std;
using namespace sf;

int main() {
    GameStart::GameStart();
    Clock timer;
    cout << "Started." << endl;

    Window GameWindow(VideoMode(640, 480),"Basic window");

    while (1) {
        Sleep(0.5f);
    }
    return 0;
}

我知道它不是计时器,GameStart或任何其他个人包含文件。

2 个答案:

答案 0 :(得分:1)

Code :: Blocks 12.11附带MinGW GCC 4.7.1 TDM编译器,它与官方下载页面上提供的二进制文件不兼容,所以除非你用新编译器重新编译SFML 1.6,否则一切都行不通进行。

除此之外,您还应阅读SFML FAQ的this section

答案 1 :(得分:0)

我试过了,它没有问题:

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

int main() {
    std::cout << "Started." << std::endl;

     sf::Window gameWindow( sf::VideoMode(640, 480),"Basic window");

     while (gameWindow.IsOpened()) {
         sf::Event event;
        while (gameWindow.GetEvent(event)) {

            if (event.Type == sf::Event::Closed)
                gameWindow.Close();
        }
    }
    return EXIT_SUCCESS;
}

我将while(1)替换为(gameWindow.IsOpened()),并添加了关闭按钮的支持。这允许删除与此无关的Windows标题。

您应该尝试在调试模式下编译并执行它。它可能会帮助您理解这个问题。

此外,当您的代码不起作用时。我建议您评论一切不相关的内容(在此示例中为GameStart::GameStart();Clock timer;,...),看看它是否有效。