我遇到了一个又一个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 *