cuda(Unresolved extern function错误) 编译调用其他文件中的device函数
Unresolved extern function错误
编译过程中遇到Unresolved extern function xxxxxx 错误,一般导致这个错误的原因是在__global__和一些__device__函数放在了分开编译的不同文件中,并且在__global__中调用了这些__device__函数。
解决的方法也很简单,有两种解决方法
- 将二者放到同一文件中进行编译
- 通过添加-dc标志来显示启用relocatable device code模式,-dc选项等价于 -rdc=true -c
补充问题
在实际操作中按照文档中如下的的加上-dc进行编译
1 | nvcc -arch=sm_35 -dc xx1.cu -o xx1.o |
还是会报错Unresolved extern function,没能解决问题
后来在编译main.cu时添加 -rdc=true,不再报错,问题解决
但是文档中都只是说添加-dc就可以,为什么还需要再添加-rdc暂时还没搞明白。
1 | nvcc -arch=sm_35 -dc xx1.cu -o xx1.o |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WhatGhost!