当前位置: 首页 > 知识库问答 >
问题:

新文件系统库和叮当声 7 的未定义引用错误

满才
2023-03-14

我试图推出新的文件系统STL库,但由于某些原因,出现了错误。Clang 7网站表示,它应该支持新的文件系统library–我相信

我使用了另一个Stack Exchange帖子中的一些代码,因此它应该根据赞成票的数量有效。这应该转到指定的目录并打印该目录中的所有文件。这是代码。

#include <iostream>
#include <string>
#include <experimental/filesystem>

namespace fs = std::experimental::filesystem;

int main(int argc, char *argv[])
{

    std::string path = "/home/.../Downloads";
    for (const auto & entry : fs::directory_iterator(path))
    {
        std::cout << entry.path() << std::endl;
    }

}

我收到的错误消息是:

CMakeFiles/filesystem_app.dir/main.cpp.o: In function `main':
/media/.../clangcpp/filesystem_app/main.cpp:13: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::operator*() const'
/media/.../clangcpp/filesystem_app/main.cpp:13: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::operator++()'
CMakeFiles/filesystem_app.dir/main.cpp.o: In function `path<std::__cxx11::basic_string<char>, std::experimental::filesystem::v1::__cxx11::path>':
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/experimental/fs_path.h:198: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
CMakeFiles/filesystem_app.dir/main.cpp.o: In function `directory_iterator':
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/experimental/fs_dir.h:188: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我确保包含实验/文件系统头,而不仅仅是文件系统,它删除了Cleion中的任何红色波浪线。我尝试从CLion以及命令行进行编译。我使用的编译字符串是:

  clang++-7 -Wall -std=c++17 main.cpp -o app

有没有人知道这里出了什么问题?在编译错误消息中,我看到对std::实验::文件系统::v1::__cxx11::..的引用,我想知道为什么这没有说cxx17,但我不确定这是否是问题的原因。我在上面的编译字符串中明确指出了c 17

共有1个答案

邢同
2023-03-14

文件系统仍然是实验性的,需要一个额外的库。

如果您使用的是libstdc,请使用-lstdc-fs(或target_link_librarys(${PROJECT_NAME}stdc-fes).)链接。

对于libc,使用-lc fs(类似于CMake命令)。

 类似资料:
  • 我试图使用code runner在visual studio代码中编译一个带有experimental::filesystem的项目,但是我甚至无法在终端中编译它。 代码如下,文档中的一个非常简单的测试用法: 使用编译 在code-runner配置中或使用just in-terminal通常无法编译或无法工作。 它提供的错误是: 如果有任何帮助,我将不胜感激。我正在运行linux,并且已经检查过l

  • 考虑以下代码: 编译时使用-std=c 11,在clang中,

  • 我是新手,所以请帮忙。我在尝试使用angular with angular ng controller标记运行简单代码时出错,我在html中显示一个变量,该变量在javascript文件中定义为: 并在html中显示如下:html页面 chrome控制台上的错误如下: 未捕获的引用错误:系统未定义(匿名函数)@angular2.js:3098 指向angular2js中的某些函数: 我不明白这个问

  • 读写本地文件是一个程序最基本的功能,而对于Web技术来说,出于安全因素考虑,浏览器一直没有完全将这一功能开放给JavaScript,直到HTML5提出了FileSystem API。 Chrome为应用提供了权限更加开放,功能更加强大的一系列文件系统接口,以满足Chrome应用作为桌面程序对磁盘读写的需求。在本章将详细为大家讲解选择目录、读取文件和写文件的方法。 要使用FileSystem API

  • 在parseConfiguration方法中我们通过propertiesElement和settingsAsProperties两个方法已经完成了对mybatis属性配置的解析和准备工作。 //issue #117 read properties first // 加载资源配置文件,并覆盖对应的属性[properties节点] propertiesElement(root.evalNode("

  • 问题内容: 我对Ubuntu相当陌生,但似乎无法使它正常工作。它可以在我的学校计算机上正常工作,我不知道自己在做什么。我检查了 usr / include 和time.h就好了。这是代码: 我正在使用CodeBlocks作为我的IDE来进行构建和运行。任何帮助都会很棒,谢谢。 问题答案: 添加到g ++命令行的末尾。该链接在librt.so“实时”共享库中。