【问题标题】:filesystem namespace problems with C++17C++17 的文件系统命名空间问题
【发布时间】:2021-08-29 05:57:56
【问题描述】:

无法访问文件系统命名空间 -

问题:

  • “符号‘文件系统’无法解析”`

领先研究:

  1. How can I get the list of files in a directory using C or C++? - 堆栈内存溢出

  2. C++17 Filesystem - 代码游戏

设置:

  1. GCC/G++:9.2.0

  2. C++:C++17

演示:

File Demo

#include <iostream>
#include <filesystem>
using namespace std;

namespace fs = std::filesystem;
    
int main(void) {    
    return 0;
}

我尝试了std::experimental 变体,但没有成功。如何让 C++17 和 &lt;filesystem&gt; API 正常工作?

解决方案更新:

谢谢P Kramer,使用 MSYS2 我能够很快找到解决方案。

程序:

  1. 获取MSYS2 (msys2-x86_64-20210725.exe)
  2. 运行安装程序 (@loc C:\Sw\msys64)
  3. 吃豆人-Syu
  4. 吃豆人-苏
  5. pacman -S --needed base-devel mingw-w64-x86_64-toolchain
  6. 使用 cmd 检查 (C:\Sw\msys64\mingw64\bin)
  7. gcc -v (GCC v10.3.0)
  8. 添加到路径(C:\Sw\msys64\mingw64\bin, C:\Sw\msys64\usr\bin)
  9. 重启 Eclipse
  10. Demo 编译确认 C++17 (__cplusplus == 201703L)
  11. 使用它!

Final Working Demo

【问题讨论】:

  • 您是否使用指定的-std=c++17 进行编译?

标签: c++ filesystems


【解决方案1】:

https://gcc.gnu.org/gcc-9/changes.html 提到 Windows 上的文件系统实现不完整。转到编译器资源管理器并首先使用 gcc 9.2 编译您的示例。见这里:https://godbolt.org/z/q9vTcernn 这确实会失败,如果您更改为最新的 gcc (for windows) 一切编译正常。

所以问题出在你使用的编译器版本上。

【讨论】:

  • 哈利路亚它有效!稍后会发布我的答案,非常感谢您
猜你喜欢
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 2018-07-18
  • 2018-06-27
  • 2020-03-04
相关资源
最近更新 更多