如何在cuda和cpp文件之间正确链接创建的函数?

时间:2019-06-27 16:59:06

标签: c++ visual-studio cuda mex

我正在编写一个MATLAB .mex 库以与c ++和CUDA一起运行。在 .cu .cpp 文件中,我都必须编写:

extern "C" void myFunction(float* variable1,float* variable2);

以与Visual Studio 2015一起编译。myFunction的定义在 .cu 文件中,而我在 .cpp 中对其进行调用。它已经在工作,但是我想更好地组织它,并使其在将来更容易修复。

我的问题是:是否有一种方法可以创建一个头文件来链接两个文件中的此功能,所以我不需要在两个文件中都明确地写extern "C"? / p>

1 个答案:

答案 0 :(得分:0)

我建议您创建一个头文件,例如将其命名为myFile.h,在其中放置函数声明 only

void myFunction(float* variable1,float* variable2);

然后在您的myFile.cu中放入函数定义:

void myFunction(float* variable1,float* variable2){
    std::cout << "Hi! I'm a function!" << std::endl;
}

最后,您必须在myFile.cumyFile.cpp中都包含标头:

#include <cosFutStr.h>

这样,您将在myFile.cu中具有函数定义,并且可以从myFunction调用myFile.cpp。 正如talonmies在评论中所说,鉴于您将使用C ++链接编译源代码,因此所有内容都将以正确的方式链接,而无需使用extern "C"。 但是我认为这是C ++问题,而不是CUDA问题。