【发布时间】:2020-07-24 03:14:00
【问题描述】:
我正在将一些代码从一台电脑上的 VS2017 移动到另一台装有 VS2019 的电脑上。一切都很好,除了我不能使用 std::filesystem。在我以前的代码中,我使用的是 C++14 并且有 std::experimental::filesystem。在新代码中,我想移至 C++17,因此我更改为 std::filesystem(如下面的代码所示)。奇怪的是智能感知(不确定它是否是正确的名称)没有显示错误。当我输入 std::f... 时,它甚至会显示文件系统...
但代码不会构建并给出错误“命名空间“std”没有成员“文件系统”。
我将 C++ Language Standard 更改为 c++latest,VS2019 版本是 Community 16.6.5。
#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
std::string path = "C:\\";
for (const auto& entry : fs::directory_iterator(path))
std::cout << entry.path() << std::endl;
}
编辑:我最初问题的最后一行可能不够清楚:我已经将“C++ 语言标准”更改为 C++17 或 C++latest。
感谢@drescherjm,我们发现这是一个 Cuda 问题。来自 Cuda 专家的任何想法?
【问题讨论】:
-
您是否指定了
/std:c++14、/std:c++17或/std:c++latest? -
您应该在项目属性 - C/C++ - C++ 语言标准中将 C++ 语言标准设置为 C++17,以利用 C++17 的功能。
-
似乎错误来自 Cuda 编译器而不是 Visual Studio。我对此并不熟悉,但我不希望 cuda 处理 std::filesystem。
-
@drescherjm 非常感谢您的帮助!
-
目前您已将其设置为 CUDA 项目(这很好)。在这种情况下,在 VS2019 中转到 Project..Properties..Configuration Properties...CUDA C/C++...Command Line 然后您将在对话框的右侧底部看到一个标有“附加选项”的框。在该框中,输入以下内容:
-std=c++17 -Xcompiler "/std:c++17 "然后单击“应用”然后重建。
标签: c++ cuda visual-studio-2019