尝试在GCC 6.0中使用最新的C 1z功能时,特别是在experimental::filesystem库中,您可以遇到这样的链接器错误:
undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
需要注意的是,文件系统 TS(技术规范)不是 C 1z(现在的 C 20)标准的一部分。因此,该错误与 C 1z 支持无关,而是与链接到适当的库有关。
要解决此问题,请将您的代码与静态库链接 - Lstdc fs。这将为实验性::文件系统功能提供必要的实现。请记住将其放在链接器命令中依赖于它的任何对象之后。
2017 年 11 月:
GCC 8.x在命名空间 std::filesystem 下引入了一个符合 C 17 的文件系统库。它需要 -std=gnu 17 和 -lstdc fs 才能使用。
2019 年 1 月:
GCC 9 允许在没有 -lstdc fs 的情况下使用 std::filesystem 组件。
四月2024:
GCC 13.3 在 -lstdc exp 中呈现实验性::文件系统符号以及其他实验性定义。
以上是在 GCC 中使用 `experimental::filesystem` 时如何解决链接器错误?的详细内容。更多信息请关注PHP中文网其他相关文章!