0
所以我的問題是:我在mac os x mountain lion上使用Nvidia的nsight應用程序編寫CUDA應用程序:源代碼是一個.H/.CU /混合的.cppCUDA:__device__和__global__錯誤:預期的構造函數,析構函數或在「unsigned」/「void」之前的類型轉換「
我有一個HelloCUDA.h頭與以下聲明:
//yep, both taken from examples.
__device__ unsigned int bitreverse2(unsigned int number);
__global__ void bitreverse(void *data);
和我有限定這些方法的HelloCUDA.cu文件:
__device__ unsigned int bitreverse3(unsigned int number) {
//definition
return number;
}
__global__ void bitreverse4(void *data) {
//another definition...
bitreverse3(idata[threadIdx.x]);
}
它工作,直到我使用eclipse(nsight)新類嚮導添加了新的C++類文件(.h/.cpp)。現在,當我試圖建立這樣的事情:
../src/HelloCUDA.h:21: error: expected constructor, destructor, or type conversion before ‘unsigned’
../src/HelloCUDA.h:23: error: expected constructor, destructor, or type conversion before ‘void’
我檢查項目設置,我不認爲有任何改變。
那麼,什麼給了?任何人都可以,請幫我解決這個問題?
什麼是'idata'?我沒有看到它在任何地方定義。 – talonmies 2013-05-14 18:21:42
如果HelloCUDA.h包含在.cpp文件中而不是.cu文件中,它將不起作用。 .cpp文件被髮送到主編譯器,它不知道'__device__'或'__global__'是什麼。無論如何,你不應該在任何.cpp文件中需要該標題(基於此問題中發佈的內容)。 – 2013-05-14 18:56:28
idata只是代碼的一部分。這並不重要,這不是問題所在。 – 2013-05-14 18:56:53