我有几个.cpp文件和几个.h文件。如果我用nvcc而不是g++编译它们,一切都很好。现在,当我(在main.cpp中)开始分配设备上的内存时,即
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:坏的reloc符号索引(0x90 >= 0x1e),用于`.text‘FSPB_kernel_Jelen.o:未能读取符号:坏值collect2: ld返回1退出状态:* FSPB错误1
有什么想法吗?
发布于 2011-06-16 14:22:59
显然,
、int2、int3、float3等是我自己的重声明,它们位于mylib.h文件中并且是全局的。
看起来数据自动化系统使用了这些名字,现在你有了名字冲突。选择您使用的库没有使用的名称,或者更好的是,在代码中使用名称空间。(最好:两者兼得)
https://stackoverflow.com/questions/6372980
复制相似问题