我正在嘗試從C++類調用內核包裝foo
。我一直試圖做的建議here如下:從C++類調用.cu文件中的內聯函數
// 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
怎麼回事?
這很簡單,類內部的代碼必須具有C++鏈接。 – talonmies 2013-05-09 14:52:09
@talonmies - 所以成員'cls :: foo'應該只在C++文件中定義,它應該調用一個C++非成員標記'extern C',然後調用'.cu中的CUDA內核包裝器'文件,然後調用內核? – mchen 2013-05-09 14:58:23