致命错误:文件系统:找不到该文件或目录

97

在使用CentOS 7.1和gcc版本6.1.0 (GCC)时,我遇到了以下错误:

fatal error: filesystem: No such file or directory

在这一行上

#include <filesystem>

使用编译器进行编译

g++ main.cpp -o main -std=c++17

问题出在哪里?


4
您的配置中缺少 filesystem 头文件。这个错误信息不够清晰吗?您有什么问题? - Cody Gray
7
这里有没有不合理的踩?虽然没有提供最小化可重现代码 [MCVE],但根据 @Joachim 的说法,情况非常明确。 - πάντα ῥεῖ
6
目前(2021年9月1日)看起来<filesystem>似乎还不被gcc支持,但<experimental/filesystem>可能会被支持。您也可以尝试使用<boost/filesystem.hpp> - n. m.
14
如果你不理解问题,并不意味着这个问题无效。我点了赞,因为我遇到了同样的问题,而且我也会用同样的方式提出它。 - jav
5
<filesystem> 已经被 C++17 全面支持,因此您现在可以像这样编译原始文件:g++-8 -std=c++17 demo.cpp。我认为这个问题很好。我也遇到了同样的问题,最终来到了这里。 - Elliott
显示剩余2条评论
1个回答

101

看起来你需要像这样包含 <filesystem>

#include <experimental/filesystem>

别忘了在GCC标志中添加-lstdc++fs

这是证明:Coliru

如果不起作用,那可能意味着您的配置中没有使用filesystem

此外,如@MartinR.所指出的,在GCC 8+中不再需要experimental


1
它有效了,谢谢! 有关完整信息: 链接 - RobertAalto
18
在使用gcc命令时,需要添加-lstdc++fs选项。 - RobertAalto
11
你可以像这样在代码中使用它:例如:namespace fs = std::experimental::filesystem;(意思是你可以使用如上所示的方式在你的代码中使用它,将命名空间fs设置为std::experimental::filesystem) - jav
8
如果您的gcc版本大于等于8,您可以去掉“experimental”。 - Martin R.
1
我正在使用g++8,并包含了LIBS += -lstdc++fs,但它仍然显示未定义的引用。实验性的/filesystem运行良好。有人知道为什么实验性的可以工作而常规的filesystem不行吗? - kocica
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接