我正在尝试从C ++类调用内核包装器foo
。我尝试按照以下建议here进行操作:
// In CPP.h:
class cls {
extern "C" inline void foo();
}
// In Kernels.cu:
#include "CPP.h"
extern "C" inline void cls::foo() {
// call kernels here
}
但这没有用 - 我得到编译器错误:
CPP.h: invalid storage class for a class member
CPP.h: "cls::foo" was referenced but not defined
Kernels.cu: label "cls" was declared but never referenced
出了什么问题?
答案 0 :(得分:2)
您不应该使用extern "C"
标记类方法。
使用extern "C"
说明符创建一个包装器非成员函数,并让此函数调用您的类的方法(您还需要指定一个实例)。