CUDA无效int2的重新声明
问题描述:
我有几个.cpp文件和几个.h文件。如果我使用nvcc而不是g ++编译它们,一切都很好。现在,当我开始(在main.cpp中)分配设备上的内存时,即CUDA无效int2的重新声明
cudaMalloc((void**)&_a, _DSIZE * sizeof(float))
然后问题就开始了。我试图改变扩展到.cu,但它甚至更糟。
错误,我得到:
mylib.h(39): error: invalid redeclaration of type name "int2" /usr/local/cuda/bin/../include/vector_types.h(402): here
mylib.h(43): error: invalid redeclaration of type name "int3" /usr/local/cuda/bin/../include/vector_types.h(406): here
mylib.h(47): error: invalid redeclaration of type name "float3" /usr/local/cuda/bin/../include/vector_types.h(434): here
显然,INT2,INT3,FLOAT3等都是我自己再声明这是位于mylib.h文件,是全球性的。
我也得到很多的警告:
mylib.h(128): warning: use of a type with no linkage to declare a function
mylib.h(129): warning: use of a type with no linkage to declare a function
我在做什么错?我一直努力与.CU文件,但我认为这是不是真的有必要该扩展...
重新定义,警告关闭,但仍然是一个错误:
在/ usr/bin中/ LD:FSPB_kernel_Jelen的.o:在第`的.text” FSPB_kernel_Jelen.o偏移0xa0100坏RELOC符号索引(0×90> = 0X1E)为:不能读取的符号:坏值 collect2:LD返回1个退出状态 化妆:* [FSPB ]错误1
任何想法?
请显示int2的声明/定义等 – 2011-06-16 14:10:25
typedef struct { int x,y; } int2; typedef struct { int x,y,z; } int3; – Manolete 2011-06-16 14:22:37