C++ファイルにCUDAソースファイルを含めることは機能しません。これは単にCUDAソースをC++プログラムコードの一部にし、通常のC++コンパイラはCUDA構文拡張を理解しないためです。それでもCUDAコードを非CUDAC++コードとは別にしたい場合は、別のコンパイルを検討することをお勧めします。CUDAソースコードは通常のオブジェクトファイルにコンパイルでき、それを他のオブジェクトファイルとリンクして実行可能ファイルを生成できます。
次のようにC++コードを変更します。
extern void CudaMain(void);
int main()
{
CudaMain();
return 0;
}
CUDAファイルをでコンパイルしnvcc
、C++コードをC++コンパイラでコンパイルしてから、結果のオブジェクトファイルを次のようにリンクしますnvcc
(linkコマンドで標準のC ++ライブラリを指定する必要がある場合もあります)。
$ nvcc -c -o test_cuda.o test.cu
$ g++ -c -o test_cpp.o test.cpp
$ nvcc -o test.exe test_cuda.o test_cpp.o -lstdc++
編集:あなたの質問はVS2010についてです。そこでカスタムビルドステップを作成する必要があるかもしれません。