我是视觉工作室的新手,我正在尝试使用visual studio 2010在我的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机器上工作正常...... 提前致谢
答案 0 :(得分:0)
您无需同时包含.cu
和.cuh
文件。您可以包含其中一个。
如果您包含.cu
文件,请按照.cuh
文件中的注释中给出的示例,这就是您需要做的全部内容。
如果您只包含 .cuh
文件,那么您还需要在项目中构建.cu
文件,并将其链接。
如果您只是颠倒包含文件的顺序,它也可能有效:
#include "cuPrintf.cuh"
#include "cuPrintf.cu"
假设您没有尝试在项目中 构建cuPrintf.cu
。
您的代码和中包含“cuPrintf.cu”似乎是在项目中单独构建cuPrintf.cu。你不能这样做。
由于您要包含“cuPrintf.cu”,因此需要从项目源文件中删除cuPrintf.cu文件。 (不要删除文件,只删除它在你要构建的项目源文件中显示的事实。)