致命错误:SFML/Graphics.hpp:不存在这样的文件或目录

问题描述 投票:0回答:9

我在 SFML 方面遇到了一个又一个的问题,但希望最终是值得的。

这是错误:

致命错误:SFML/Graphics.hpp:没有这样的文件或目录

和代码:

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

int main(){
sf::RenderWindow Window;
Window.create(sf::VideoMode(800, 600), "SFML");

while(Window.isOpen()){
    sf::Event Event;
    while(Window.pollEvent(Event)){
        if(Event.type == sf::Event::Closed)
            Window.close();
    }
}
}
c++ sfml
9个回答
6
投票

您需要告诉编译器在哪里查找 SFML 头文件。这可以通过在编译器调用中传递

-I
标志来完成:

-I/path/to/SFML/headers

3
投票

如果您使用的是 Linux,那么这一条线路就是您的最佳选择:

sudo apt-get install libsfml-dev

在此处的文档中找到它: https://www.sfml-dev.org/tutorials/2.1/start-linux.php


1
投票

我对此还很陌生,但如果您按照教程进行操作,那么您可能会将 .hpp 文件的路径设置为 /include,但 .hpp 文件实际上位于 /include/SFML 中

#include <include/SFML/Graphics.hpp>


0
投票

如果您碰巧使用 Windows Visual Studio 命令行编译器,则包含语法为:

/I"path\to\SFML\headers"

0
投票

我猜你在额外的包含和/或库方面犯了一个错误。再次检查 - 如果问题仍未解决 - 然后确保 - 如果您没有使用 SFML 静态 - SFML DLL 文件是否位于正确的目录中

我个人发现,将整个 SFMl 文件夹放入您的 C 驱动器中是个好主意。

编辑 SFML 和链接器的一个常见错误是编写 graph-d.lib 而不是 graphics-d.lib(在调试模式下)


0
投票

这可能不正确,但假设您来自与我相同的源,当您将 SFML 包含文件链接到编译器时,请确保将 -I 命令与文件路径分开(-I C: \SFML\include,而不是 -IC:\SFML\include)。我遇到了同样的错误,这就是我最终修复它的方法。


0
投票

在我的例子中,包含路径都是正确的,但我忽略了指定 SFML 的子目录;我把

#include <SFML/Vector2.hpp>
而不是
#include <SFML/System/Vector2.hpp>


0
投票

如果您使用 Visual Studio,请注意以下事项:

  • 确保您应用的配置适用于正确的平台 (Win32/Win64)。

  • 确保您配置了正确的模式(调试/发布/所有配置)

  • 编译代码时,从运行按钮附近的上部工具栏中选择适当的平台(x86/x64)和配置(调试/发布)。如果工具栏被隐藏,请转到“视图”->“工具栏”->“标准”。

  • 为链接器配置“输入”时,请确保为调试模式添加 -d。


-4
投票

© www.soinside.com 2019 - 2024. All rights reserved.