今天使用cuda的cufft进行复数矩阵的快速傅立叶变换却被如何包含.so动态库到工程文件这个问题中给挡住了,频繁报错…

1
2
3
4
5
6
/root/cuda-workspace/cufft_diffraction/Debug/../cufft_diffraction.cu:81: undefined reference to `cufftPlan2d'
/root/cuda-workspace/cufft_diffraction/Debug/../cufft_diffraction.cu:82: undefined reference to `cufftExecC2C'
/root/cuda-workspace/cufft_diffraction/Debug/../cufft_diffraction.cu:85: undefined reference to `cufftDestroy'
collect2: error: ld returned 1 exit status
makefile:58: recipe for target 'cufft_diffraction' failed
make: *** [cufft_diffraction] Error 1

可以看到其实就是cufft库文件没有包含到工程文件中,之前也试过将libcufft.so库文件加入 工程属性–Bulid–settings–Tool Settings–NVCC Linker–Libraries 在Library seach path(-L)中加入libcufft.so所在位置/usr/local/cuda-9.0/lib64 然后在Libraries(-l)中加入libcufft.so即可,但是却还是不行,因为加入.so库的话前面的lib前缀与.so后缀是不需要的 因此在Libraries(-l)中加入cufft即可 之前还尝试过重新导入

1
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

发现没反应