gpt4 book ai didi

c++ - 如何在 VS2019 CUDA 项目中启用 C++17 代码生成

转载 作者:行者123 更新时间:2023-12-05 02:06:01 27 4
gpt4 key购买 nike

我正在将一些代码从一台电脑上的 VS2017 转移到另一台装有 VS2019 的电脑上。一切都很好,除了我不能使用 std::filesystem。在我以前的代码中,我使用的是 C++14 并且有 std::experimental::filesystem。在新代码中,我想转到 C++17,所以我更改为 std::filesystem(如下面的代码所示)。奇怪的是,intellisense(不确定它是正确的名称)没有显示错误。当我键入 std::f 时,它甚至会显示文件系统...

enter image description here

但代码不会构建并给出错误“命名空间“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++ 最新版本。

编辑:根据要求,输出: enter image description here

感谢@drescherjm,我们发现这是一个 Cuda 问题。 Cuda 专家有什么想法吗?

最佳答案

使用 CUDA 11,nvcc 编译器驱动程序能够支持 certain C++17 language features 的使用.目前,在 VS2019 中,这似乎不是默认行为。

在 VS2019 中编译 cuda 项目时,以下方法应该可以启用 C++17 支持:

转到 Project..Properties..Configuration Properties...CUDA C/C++...Command Line 然后您将在对话框的右侧底部看到一个标有“其他选项”的框。在该框中,键入以下内容:

-std=c++17 -Xcompiler "/std:c++17"

然后单击“应用”然后重建。 Project Properties

(对于 future 版本的 CUDA 或 future 版本的 Visual Studio,这些说明可能会发生变化。)

请注意,此方法仅适用于 CUDA 项目(即调用 nvcc 进行编译时),并且无论您的代码是否在以 .cpp 结尾的文件中,都应该可行> 或以 .cu 结尾的文件中。对于非 CUDA 项目,this可能会有帮助。

std::filesystem 功能似乎需要 C++17。 CUDA nvcc 编译器驱动程序已记录 here .

关于c++ - 如何在 VS2019 CUDA 项目中启用 C++17 代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63036624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com