【问题标题】:Using SFML with Visual Studio 2010在 Visual Studio 2010 中使用 SFML
【发布时间】:2011-12-11 04:30:25
【问题描述】:

现在我正在尝试让 SFML 与我的 Visual Studio 2010 一起使用,因此我可以开始学习如何使用 SFML 中的库制作 Windows 应用程序和游戏。我正在按照教程here 打开一个新窗口,但我的程序似乎立即中断。我真的不知道为什么:S。它似乎可以构建和编译,但随后中断:

编辑:它在这一行中断:App.Create(sf::VideoMode(800, 600, 32), "SFML Window");

#include <SFML/Window.hpp>

int main ()
{
    sf::Window App;
    App.Create(sf::VideoMode(800, 600, 32), "SFML Window");
    bool Running = true;
    while (Running)
    {
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            if (Event.Type == sf::Event::Closed)
                Running = false;

            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                Running = false;

        }
        App.Display();
    }

    return EXIT_SUCCESS;
}

另外,我应该注意: 在 SFML 网站上,使用 Visual Studio 进行设置的教程似乎适用于 VS 2008(使用 VS 设置 SFML)。我设法获得了一组 VS2010 的说明并进行了设置。我使用了一个简短的程序来测试 SFML 库是否正常工作:

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

int main()
{
    sf::Clock Clock;
    while (Clock.GetElapsedTime() < 5.f)
    {
        std::cout << Clock.GetElapsedTime() << std::endl;
        sf::Sleep(0.5f);
    }

    return 0;
}

^ 这个程序运行良好。

【问题讨论】:

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


    【解决方案1】:

    SFML 库是为 Visual Studio 2008 编译的。如果您将它与 VS2010 一起使用,它将“有点”工作。当您调用某些函数(如 App.Clear())时,您会收到有关堆栈损坏的消息,以及可能的其他硬崩溃。

    您需要自己重新编译库的源代码,或者找到其他人已经完成的版本。我不相信有“官方”来源,但如果你在 SFML 网站上搜索论坛,你会发现一些为 2010 年编译的库的链接。

    迟到的答案,我知道……但这个问题仍然一直在出现。

    【讨论】:

    • 是的,你是对的。后来我发现了这一点,并得到了一组重新编译的 dll。一切正常。
    【解决方案2】:

    我很确定您在这里遇到的错误是因为您使用了Window 而不是RenderWindow

    【讨论】:

    • 如果你说的是行:sf::Window App; ...然后我刚刚测试了你的建议,它仍然不起作用。该程序甚至没有完全使用 RenderWindow 构建。它根本不认识它。使用 Window 它构建,但在执行时中断。另外,我修复了 OP 中的一些链接。当我粘贴这个时,我没有意识到它们坏了。
    • RenderWindow 用于二维绘图。没有图纸,用Window就可以了。
    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多