我有一个opencv C++脚本,我需要在其中使用cudamemcpy。所以我在我的脚本中使用了cudamemcpy并将该文件保存为.cu我正在使用cmake。所以我将.cu添加为cuda_executable。但是,当我用“命令使”我收到以下错误在cmake中使用nvcc编译.cu
因此,在第27行,我改变的C++ 0x到C++ 11和我同样的错误 所以我试过gnu ++ 11但我仍然有同样的错误。
我有一个opencv C++脚本,我需要在其中使用cudamemcpy。所以我在我的脚本中使用了cudamemcpy并将该文件保存为.cu我正在使用cmake。所以我将.cu添加为cuda_executable。但是,当我用“命令使”我收到以下错误在cmake中使用nvcc编译.cu
因此,在第27行,我改变的C++ 0x到C++ 11和我同样的错误 所以我试过gnu ++ 11但我仍然有同样的错误。
问题是,-std=c++11
未被添加到nvcc
构建命令,如果它通过add_definitions()
传递。从FindCUDA cmake documentation:
标记传递到add_definitions与-D或/ D传递给nvcc。
其他选项如-std=c++11
不会传递给nvcc
。
您可以通过它与
cuda_add_executable(opencv opencv.cu OPTIONS -std=c++11)
增加了CUDA_NVCC_FLAGS
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11")
或每个目标水平talonmies使c++11
在全球范围内的评论指出:如果只有你需要运行时API的功能,如cudaMemcpy()
,你可以在普通的C++文件中使用它们(不需要.cu扩展名)。然后,您需要包含cuda_runtime_api.h
并链接到cuda运行时库cudart
。 (确保cuda include目录位于include路径中,并且存储库位于库路径中,如果使用nvcc
进行编译,将自动处理这个库。)
您不需要使用.cu扩展名源代码如果你只是从运行时API调用函数。另外,请不要将错误文本和代码作为图像发布。搜索不适用于图像 – talonmies
有一代从来不知道拨号调制解调器的工程师。 – Drop