vs2005,环境已经搭配好了,新建了一个cudawinapp的工程,把sdk中的example2.cu和example_2_kernel.cu两个文件复制到cuda1.cu和cuda2.cu文件,并且添加到工程里面。。
编译的时候提示:
1>Compiling with CUDA Build Rule…
1>“E:\sofeware\Nvidia—CUDA\bin\nvcc.exe” -arch sm_10 -ccbin “E:\sofeware\vs2005\VC\bin” -Xcompiler “/EHsc /W3 /nologo /Od /Zi /RTC1 /MTd " -I"E:\sofeware\Nvidia—CUDA\include” -I"E:\sofeware\Nvidia—CUDA\NVIDIA Computing SDK\C\common\inc" -maxrregcount=32 --compile -o “Debug\CUDA2.cu.obj” “d:\CUDAWinApp3\CUDAWinApp3\CUDA2.cu”
1>CUDA2.cu
1>d:/CUDAWinApp3/CUDAWinApp3/CUDA2.cu(26): error: identifier “CUT_BANK_CHECKER” is undefined
麻烦问下这个是什么问题呢?谢谢了。。
[ 本帖最后由 wscuiqiu 于 2010-3-12 13:18 编辑 ]
这个需要头文件,找到cut_bank_checker的定义,或者去掉它
[
1 谢谢勇哥,我在cuda2.cu文件中include了包含cut_bank_checker的头文件。。但是这个头文件我明明已经在工具–选项–vc++目录下面包含了的。。不知道为什么还要重新include呢。。??
2 但是rebuild的时候,出现如下错误提示:
1>正在链接…
1>CUDA2.cu.obj : error LNK2005: ___device_stub__Z10testKernelPfS_ii 已经在 CUDA1.cu.obj 中定义
1>CUDA2.cu.obj : error LNK2005: “void __cdecl testKernel__entry(float *,float *,int,int)” (?testKernel__entry@@YAXPAM0HH@Z) 已经在 CUDA1.cu.obj 中定义
1>D:\CUDAWinApp3\Debug\CUDAWinApp3.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
3 忽然想起来昨天看了一晚上勇哥的blog,上面又和这个类似的问题,并且有解决办法:
“对于cuda2.cu属性设置为从生成中排除。。”
4 问题虽然解决了。。但是这个为什么要这么处理呢?额,因为最近才开始学习这个,所以不是很明白。。能不能说明下呢。。??
5 再次感谢。。
因为include已经包含到其他的cu文件里面了,所以编译的时候,其实已经被包含的cu文件编译了。