致命错误:SFML/Graphics.hpp: no such file or directory exists



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

错误如下:

致命错误:SFML/Graphics.hpp: No such file or directory

和代码:

#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();
    }
}
}

您需要告诉编译器在哪里查找SFML头文件。这可以通过在编译器调用中传递-I标志来实现:

-I/path/to/SFML/headers

如果你使用的是Linux系统,那么这一行代码就是最好的选择:

sudo apt-get install libsfml-dev

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

我对这个很陌生,但是如果您遵循了教程,那么您可能会将。hpp文件的路径设置为/include,但是。hpp文件实际上位于/include/SFML

中。

#include <include/SFML/Graphics.hpp>

如果您碰巧使用windows visual studio命令行编译器,则包含语法为:

/I"pathtoSFMLheaders"

我猜你做了一个错误,你的额外的包括和/或库。再检查一次——如果问题仍然没有解决——然后确保——如果你不使用SFML静态——如果SFML DLL文件在正确的目录

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

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

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

在我的例子中,包含路径都是正确的,但是我忽略了指定SFML的子目录;我用#include <SFML/Vector2.hpp>代替#include <SFML/System/Vector2.hpp>

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

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

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

  • 在编译代码时,从靠近Run按钮的上方工具栏中选择合适的平台(x86/x64)和配置(调试/发布)。如果工具栏被隐藏,点击View ->工具栏→标准。

  • 配置"输入"时对于链接器,确保为调试模式添加-d。

删除* and *

删除* and *

相关内容

最新更新