从C ++类调用.cu文件中的内联函数

时间:2013-05-09 14:46:11

标签: c++ class cuda gpgpu

我正在尝试从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

出了什么问题?

1 个答案:

答案 0 :(得分:2)

您不应该使用extern "C"标记类方法。

使用extern "C"说明符创建一个包装器非成员函数,并让此函数调用您的类的方法(您还需要指定一个实例)。