我有一個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