首页 >后端开发 >C++ >为什么在 GCC 6.0 中使用 Experimental::filesystem 库时会出现链接器错误?

为什么在 GCC 6.0 中使用 Experimental::filesystem 库时会出现链接器错误?

Barbara Streisand
Barbara Streisand原创
2024-11-15 10:41:021047浏览

Why am I getting linker errors when using the experimental::filesystem library in GCC 6.0?

experimental::filesystem 的链接器错误

尝试使用 GCC 6.0 中的 Experimental::filesystem 库实现 C 1z 功能时,用户可能会遇到链接器错误。错误消息指示对 std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts() 的未定义引用。

原因:

文件系统 TS 不是 C 1z 的一部分,而是一个单独的规范。 GCC 对该库的实现可在 C 11 模式下使用。

解决方案:

要解决此问题,请与 -lstdc fs 链接。 libstdc fs.a 库必须位于链接器命令中依赖于它的对象之后。

更新:

  • 2017 年 11 月: GCC 8.x 在 std::filesystem 命名空间中实现了 C 17 文件系统库。该库可以与 -std=gnu 17 或 -std=c 17 一起使用,但仍然需要与 -lstdc fs 链接。
  • 2019 年 1 月: GCC 9 及以后允许使用 std: :不带 -lstdc fs 的文件系统组件。
  • 2024 年 4 月: GCC 13.3 将 std::experimental::filesystem 符号添加到 -lstdc exp。

以上是为什么在 GCC 6.0 中使用 Experimental::filesystem 库时会出现链接器错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn