我开始用SFML和C ++创build一个游戏。 不过,我有一个问题。 我有基本的骨架类代码,但由于某种原因,当我创build一个窗口(sf :: Window)时,我立即崩溃! 这段代码不包含任何事件检查代码,但它确实并且仍然崩溃; 此外,显然,如果由于缺less事件检查,应该需要几秒钟的时间才能崩溃。 当然,一旦我看到窗口,我会添加它。
#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或任何其他个人包含文件。
Code :: Blocks 12.11附带了MinGW GCC 4.7.1 TDM编译器,它与官方下载页面提供的二进制文件不兼容,所以除非你用新的编译器重新编译了SFML 1.6,否则就不能运行。
除此之外,你应该阅读SFML常见问题的这一部分 。
我试了一下,它没有问题的工作:
#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)
by while (gameWindow.IsOpened())
并加入了关闭按钮的支持。 这允许删除这里不相关的窗口标题。
你应该尝试在调试模式下编译和执行它。 这可能会帮助你理解这个问题。
此外,当你的代码不起作用。 我会建议评论一切不相关的东西(在这个例子中: GameStart::GameStart();
Clock timer;
,…),看看它是否工作。