0

我是 Visual Studio 的新手,我正在尝试使用 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 机器上运行良好......提前致谢

4

1 回答 1

0

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

如果按照.cu文件注释中给出的示例包含该.cuh文件,这就是您需要做的所有事情。如果您包含该.cuh文件,那么您还需要.cu在您的项目中构建该文件,并将其链接进去。

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

#include "cuPrintf.cuh"
#include "cuPrintf.cu"

假设您不尝试构建cuPrintf.cu您的项目。

您似乎在代码中包含“cuPrintf.cu”,并且您正在项目中单独构建 cuPrintf.cu。你不能这样做。

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

于 2013-07-08T04:27:09.777 回答