我需要從一個純C功能main()
(駐留在main.c中)內調用CUDA C功能foo()
(駐留在gpu.cu)。我在此嘗試如下圖所示:如何在純C和CUDA C文件中包含頭文件?
的main.c(來電):
#include "gpu.h" int main(); int main() { foo(); }
gpu.h(
foo()
聲明):< ---問題就在這裏extern void foo();
gpu.cu(
foo()
定義):#include "gpu.h" extern "C" void foo() { ... }
我得到的錯誤:
gpu.cu(2): error: linkage specification is incompatible with previous "foo" gpu.h(1): here
然而,如果不使用頭文件下面確實工作:
的main.c(來電):
void foo(); int main(); int main() { foo(); }
gpu.cu(
foo()
聲明和定義):extern "C" void foo(); extern "C" void foo() { ... }
當然,我寧願使用跨純C和CUDA c代碼的單個頭文件,那麼在頭文件中使用的正確語法是什麼(我們是否仍然需要extern "C"
即使它是一個C++的東西)?我需要.cuh擴展名嗎?
我正在編譯和鏈接使用NVCC只有(即對於純C和CUDA-C代碼)。
非常感謝。