Compilation 用SFML编译

Compilation 用SFML编译,compilation,exe,sfml,Compilation,Exe,Sfml,当我使用SFML编译时,运行.exe的计算机是否需要安装任何SFML或其他文件,或者它可以不必担心地运行应用程序 很抱歉,我只是想问一个noob问题,因为我想使用SFML进行编程作业,这是我第一次。提前感谢首先,您的问题有点让人困惑,因为当您说“使用SFML编译”时,听起来好像您正在使用SFML作为编译器。这是不可能的,因为SFML是一个库而不是一个编译器,所以我假设你的意思是“编译一个使用SFML的程序” 其次,听起来您是从命令行而不是从IDE编译的,但我将回答这两个问题。总之,您需要以某种方

当我使用SFML编译时,运行.exe的计算机是否需要安装任何SFML或其他文件,或者它可以不必担心地运行应用程序


很抱歉,我只是想问一个noob问题,因为我想使用SFML进行编程作业,这是我第一次。提前感谢

首先,您的问题有点让人困惑,因为当您说“使用SFML编译”时,听起来好像您正在使用SFML作为编译器。这是不可能的,因为SFML是一个库而不是一个编译器,所以我假设你的意思是“编译一个使用SFML的程序”

其次,听起来您是从命令行而不是从IDE编译的,但我将回答这两个问题。总之,您需要以某种方式“告诉”编译器您正在使用SFML;仅仅使用
import
是不够的。这是通过链接必要的SFML库来实现的

Linux上的命令行 假设您下载了这些文件,导航到它们的目录(我相信是SFML-x)并使用命令
sudomakeinstall
安装这些库

要从命令行链接文件,需要使用
-l
标记进行链接(即短划线l,而不是短划线1)。例如,如果我制作了一个名为
circle.cpp
的小程序,它使用SFML,如下所示:

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(240, 240), "Test Window");
    sf::CircleShape circle(20.f);
    circle.setFillColor(sf::Color::Red);

    while (window.isOpen())
    {
        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}
#包括
int main()
{
sf::RenderWindow窗口(sf::VideoMode(240240),“测试窗口”);
sf::圆形(20.f);
circle.setFillColor(sf::Color::Red);
while(window.isOpen())
{
window.clear();
窗口。绘制(形状);
window.display();
}
返回0;
}
然后,为了编译(例如使用g++),我只需要编写以下命令:
g++-c circle.cpp
。但是,要创建final.exe,我需要将输出的
circle.o
文件与适当的SFML库链接起来,如:
g++-o circle.o-lsfml graphics

集成电路设备
像这样的IDE比SFML的命令行更容易使用。在IDE中,需要在名为“外部依赖项”的部分中设置设置,以包括SFML库。您还需要在“链接器”部分中链接SFML库。这些部分在您的项目设置中通常是合理的。有关屏幕截图,请参阅SFML的非常好的教程,这将使我的描述更容易理解。

我不完全确定您在问什么,但我认为您在问如何使用和编译SFML

您可以做的最好的事情是转到正式的SFML文档。它写得很好,解释了你需要启动和运行的一切

您可以在此处找到入门的官方教程:

(这是针对Visual Studio的)

如果您仔细地完成了每个步骤,那么SFML应该可以完美地运行。此外,如果您需要Visual Studio,可以从以下位置免费下载:


不要忘记处理事件。