我需要从一个纯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代码)。
非常感谢。