C++/SFML窗口创建失败

C++/SFML Window creation fail

本文关键字:创建 失败 窗口 SFML C++      更新时间:2023-10-16

好吧,我试着按照教程中所示做所有事情,但它只显示控制台,没有其他内容。试过这个时钟程序,它运行得很好。我连接了所有的库,复制了所有的.dll文件,所以真的不知道我错在哪里了。请告诉我该怎么展示,让它展示在橱窗里。我使用的是VS2010,SFML 1.6,下面是我的代码。

    #include <SFMLWindow.hpp>
    int main()
    {
         sf::Window App(sf::VideoMode(640, 480, 32), "wut");
         while (App.IsOpened())
         {
              sf::Event Event;
              while (App.GetEvent(Event))
              {
               // Window closed
               if (Event.Type == sf::Event::Closed)
                   App.Close();
               // Escape key pressed
               if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                  App.Close();        
               };
              App.Display();
          }
     };

试试这个:

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
int main()
{
    // Create the main rendering window
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");
    // Start game loop
    while (App.IsOpened())
    {
        // Process events
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();
        }
        // Clear the screen (fill it with black color)
        App.Clear();
        // Display window contents on screen
        App.Display();
    }
    return EXIT_SUCCESS;
}

是否链接到sfml主库?如果没有,请尝试;如果失败,请尝试执行WinMain而不是main()函数。此外,请确保Visual Studio没有将您的项目设置为控制台程序。

我最近经常使用SFML。按顺序尝试这些建议,保留之前的每个更改:

#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

它应该是sf::RenderWindow,而不是sf::Window

它应该是while (App.isOpen())而不是IsOpened()

如果你的RenderWindow上似乎没有"isOpen"函数,那么你可能没有SFML2,我建议你立即使用它。

你是为你的计算机重建库,还是只是尝试使用它们提供的.dll?你可能需要使用Cmake重建它们,不管你的编译器是什么。我知道我做了。

最后,我还建议使用最新的Code::Blocks作为IDE,但我想这只是最后的手段。

老问题。。但我的答案是:当你说";我使用的是VS2010、SFML 1.6…",在下载页面中说,对于Windows中的sfml-1.6,可以使用VScode 2005和VScode 2009。尝试使用不同版本的Vscode(并将所有内容链接到测试),看看它是否有效。

(对我来说,你的代码对于SFML-1.6来说很好,所以我认为这不是问题所在)