为何编译出错?

我新建了一个VC项目,里面加入了两个.cu文件,一个是xxx.cu,另一个是xxx_kernel.cu
我定义了xxx.cu用CUDA3.0的rule来编译,在xxx.cu里面定义一个类如下
///////////////////////
xxx.cu文件
///////////////////////
#pragma once
#include <cutil.h>
#include “data_rebuild_kernel.cu”
using namespace std;

template
class CDataRebuilder
{
public:
CDataRebuilder()
{

};
~CDataRebuilder()
{};
void Init(_Ty *p)
{
	//.........
};
void Free()
{
	
}

private:

};
在xxx_kernel.cu里面定义一个__global__函数如下
#pragma once
template
global void gppmAddvvT(_Ty *pVectorA, _Ty *pVectorB, _Ty *pVectorC, int iVectrDim)
{
int iTid = blockIdx.x * blockDim.x + threadIdx.x;
if(iTid < iVectrDim)
{

 		pVectorC[iTid] = pVectorA[iTid] + pVectorB[iTid];
 	}

}

然后编译,出错,输出信息如下
1>Compiling…
1>KPCA_CUDADlg.cpp
1>d:\cuda project\kpca_cuda\kpca_cuda\data_rebuild_kernel.cu(3) : error C2144: syntax error : ‘void’ should be preceded by ‘;’
1>d:\cuda project\kpca_cuda\kpca_cuda\data_rebuild_kernel.cu(3) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>Build log was saved at “file://d:\CUDA Project\KPCA_CUDA\KPCA_CUDA\x64\Debug\BuildLog.htm”
1>KPCA_CUDA - 2 error(s), 0 warning(s)