Visual studio 2010 为cuPrintf生成cuda代码时发生LNK2005错误

Visual studio 2010 为cuPrintf生成cuda代码时发生LNK2005错误,visual-studio-2010,cuda,linker-errors,Visual Studio 2010,Cuda,Linker Errors,我是VisualStudio新手,我正在尝试使用VisualStudio2010在cuda代码中使用cuPrintf #include "cuPrintf.cu" #include "cuPrintf.cuh" 但是我得到了以下错误 gpuLBMSolver.cu.obj : error LNK2005: "int __cdecl cuPrintf(char const *)" (?cuPrintf@@YAHPBD@Z) already defined in cuPrintf.cu.obj 1

我是VisualStudio新手,我正在尝试使用VisualStudio2010在cuda代码中使用cuPrintf

#include "cuPrintf.cu"
#include "cuPrintf.cuh"
但是我得到了以下错误

gpuLBMSolver.cu.obj : error LNK2005: "int __cdecl cuPrintf(char const *)" (?cuPrintf@@YAHPBD@Z) already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: "void __cdecl cuPrintfRestrict(int,int)" (?cuPrintfRestrict@@YAXHH@Z) already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: _cudaPrintfInit already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: _cudaPrintfEnd already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: _cudaPrintfDisplay already defined in cuPrintf.cu.obj
同样的代码在我的Linux机器上运行良好。。。
提前感谢

您不需要同时包含
.cu
.cuh
文件。你可以包括任何一个

如果按照
.cuh
文件注释中给出的示例包含
.cu
文件,则只需执行这些操作。 如果只包含
.cuh
文件,则还需要在项目中构建
.cu
文件,并将其链接到中

如果您只需颠倒包含文件的顺序,也可能会起作用:

#include "cuPrintf.cuh"
#include "cuPrintf.cu"
假设您不尝试在项目中构建
cuPrintf.cu

看起来您在代码中包含了“cuPrintf.cu”,并且在项目中单独构建了cuPrintf.cu。你不能那样做


由于包含“cuPrintf.cu”,因此需要从项目源文件中删除cuPrintf.cu文件。(不要删除该文件,只需删除它显示在要生成的项目源文件中的事实即可。)

更新了我的答案。您正在执行
#在其中一个文件中包含“cuPrintf.cu”
,并在项目中单独构建
cuPrintf.cu
。不要在项目中生成
cuPrintf.cu
。包括在内。