我开始使用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或任何其他个人包含文件。
答案 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;
,...),看看它是否有效。