Phi*_*ber 3 c++ cuda visual-studio-2019
我正在将一些代码从一台电脑上的 VS2017 移动到另一台装有 VS2019 的电脑。一切都很好,除了我不能使用 std::filesystem 。在我以前的代码中,我使用 C++14 并拥有 std::experimental::filesystem。在新代码中,我想迁移到 C++17,因此我更改为 std::filesystem (如下面的代码所示)。奇怪的是,智能感知(不确定它是正确的名称)没有显示错误。当我输入 std::f 时它甚至会显示文件系统...
但代码不会构建并给出错误“命名空间“std”没有成员“文件系统””。
我将C++语言标准更改为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;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我最初的问题的最后一行可能不够清楚:我已经将“C++ 语言标准”更改为 C++17 或 C++latest。
感谢@drescherjm,我们发现这是一个 Cuda 问题。Cuda 专家有什么想法吗?
使用 CUDA 11,nvcc编译器驱动程序能够支持某些 C++17 语言功能的使用。目前,在 VS2019 中,这似乎不是默认行为。
在 VS2019 中编译cuda项目时,以下方法应该可以启用 C++17 支持:
转到项目..属性..配置属性...CUDA C/C++...命令行然后您将在对话框的右侧底部看到一个标有“其他选项”的框。在该框中,键入以下内容:
-std=c++17 -Xcompiler "/std:c++17"
Run Code Online (Sandbox Code Playgroud)
(对于未来版本的 CUDA 或未来版本的 Visual Studio,这些说明可能会发生变化。)
请注意,此方法仅适用于 CUDA 项目(即nvcc调用编译时),并且无论您的代码位于.cpp以.cu. 对于非 CUDA 项目,这可能会有所帮助。
这些std::filesystem功能似乎需要 C++17。CUDAnvcc编译器驱动程序记录在此处。
| 归档时间: |
|
| 查看次数: |
2605 次 |
| 最近记录: |