CUDA语法错误'<'

Ala*_*ste 6 c++ cuda visual-studio-2010

在我的test.cu文件中(cu文件项类型是CUDA C/C++)

__global__ void foo()
{
}

void CudaMain()
{

  foo<<<1,1>>>();
}
Run Code Online (Sandbox Code Playgroud)

在我的test.cpp文件中

#include "mycuda.cu"

int main()
{

CudaMain();
return 0;

}
Run Code Online (Sandbox Code Playgroud)

和compilator在test.cu文件中发送错误"错误c2059语法错误'<'"

Hri*_*iev 4

在 C++ 文件中包含 CUDA 源文件不起作用,因为这只会使 CUDA 源成为 C++ 程序代码的一部分,并且常规 C++ 编译器无法理解 CUDA 语法扩展。如果您仍然希望将 CUDA 代码与非 CUDA C++ 代码分开,那么您可能需要考虑单独编译。CUDA 源代码可以编译为常规目标文件,然后可以与其他目标文件链接以生成可执行文件。

将C++代码修改为:

extern void CudaMain(void);

int main()
{
    CudaMain();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用 C++ 编译器编译 CUDA 文件nvcc,C++ 代码,然后将生成的目标文件链接到nvcc(您可能还需要在链接命令中指定标准 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++
Run Code Online (Sandbox Code Playgroud)

编辑:你的问题是关于VS2010的。可能您必须在那里创建自定义构建步骤。

  • 请参阅我上面对您的问题的评论。将*所有*您的 .cpp 文件重命名为 .cu (2认同)