【发布时间】:2021-03-18 01:05:21
【问题描述】:
我正在努力使用 Visual Studio Code 中的文件系统库。我只是不明白为什么它不起作用。我只是使用该库中的示例代码:
#include <fstream>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::create_directories("sandbox/a/b");
std::ofstream("sandbox/file1.txt");
std::ofstream("sandbox/file2.txt");
for(auto& p: fs::directory_iterator("sandbox"))
std::cout << p.path() << '\n';
fs::remove_all("sandbox");
}
我收到以下错误:
'filesystem' is not a namespace-name
我已经看过一些关于此的主题,但它们都描述了创建 makefile。我真的不想这样做只是为了了解makefile无法解决的一些基本错误。有没有办法让它简单地使用一些命令? 这个线程: Visual Studio Code: how to add arguments for g++ compiler? 提到一行
g++ -g -o debug main.cpp -std=c++17
所以我认为这是可能的。但是当我输入它时,我得到了大量的错误并且没有任何编译。
出于某种原因,Visual Studio 2019 没有任何问题 - 我最初遇到了一些问题,但通过将 C++ 标准更改为 C++ 17 即可轻松解决。之后,一切都可以构建并正常工作。在 Visual Studio Code 中,我已经开启了 C++ 17,为什么它在这种情况下不起作用?
【问题讨论】:
-
但是当我输入它时,我得到了很多错误并且没有任何编译。也许问题是你安装的 mingw 版本。
-
它们都描述了创建 makefile。我真的不想这样做只是为了了解 makefile 无法解决一些基本错误。您可以编辑您的 tasks.json 以添加参数。
-
感谢您的回复,drescherjm。我会尝试修补json。至于 mingw,我得到了 8.1,我正在阅读:sourceforge.net/p/mingw-w64/bugs/737 这表明 mingw 中有一个错误。我会看看我是否可以遵循该线程的一些建议。
-
根据您使用的 gcc 版本,您可能需要添加
-lstdc++fs以链接文件系统库。 -
@Shawn,文件系统手册中提到了这一点。但是,这是什么意思?这是否意味着我应该将此作为参数运行 g++ 命令,使其成为 g++ main.cpp -lstdc++fs 还是在其他地方完成?
标签: c++ gcc visual-studio-code filesystems