我正在编写一个MATLAB .mex 库以与c ++和CUDA一起运行。在 .cu 和 .cpp 文件中,我都必须编写:
extern "C" void myFunction(float* variable1,float* variable2);
以与Visual Studio 2015一起编译。myFunction
的定义在 .cu 文件中,而我在 .cpp 中对其进行调用。它已经在工作,但是我想更好地组织它,并使其在将来更容易修复。
我的问题是:是否有一种方法可以创建一个头文件来链接两个文件中的此功能,所以我不需要在两个文件中都明确地写extern "C"
? / p>
答案 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.cu
和myFile.cpp
中都包含标头:
#include <cosFutStr.h>
这样,您将在myFile.cu
中具有函数定义,并且可以从myFunction
调用myFile.cpp
。
正如talonmies在评论中所说,鉴于您将使用C ++链接编译源代码,因此所有内容都将以正确的方式链接,而无需使用extern "C"
。
但是我认为这是C ++问题,而不是CUDA问题。