无法打开cufft.lib文件以及无法解析cufft的相关的外部符号的解决方法

来源:互联网 发布:淘宝提醒发货有用吗 编辑:程序博客网 时间:2024/05/16 10:37

        近期在学习CUDA做GPU程序的开发,环境是VS2013 + CUDA6.5,在写程序的过程当中总是出现匪夷所思的错误,让我一直觉得自己的环境没有配好。

       本来程序跑得好好的,然后其他人说要升级CUDA的版本,那就直接下载CUDA7.5进行新版本的覆盖,重新定义项目的自定义依赖项,没想到就出现了一堆错误:

error LNK2001: 无法解析的外部符号 _cufftPlanMany@44
error LNK2001: 无法解析的外部符号 _cufftExecR2C@12
error LNK2001: 无法解析的外部符号 _cufftExecC2R@12
error LNK2001: 无法解析的外部符号 _cufftDestroy@4

后来发现,是因为升级了CUDA的版本,CUDA中的cufft.lib只出现在了64位的版本中,需要将配置管理器中的Win32改为X64再跑,然后又出现了别的错误:

error LNK2001: 无法解析的外部符号 __imp_fftw_execute
error LNK2001: 无法解析的外部符号 __imp_fftw_plan_dft_r2c_2d
error LNK2001: 无法解析的外部符号 __imp_fftw_plan_dft_c2r_2d
error LNK2001: 无法解析的外部符号 __imp_fftw_destroy_plan
error LNK2001: 无法解析的外部符号 __imp_fftw_malloc
error LNK2001: 无法解析的外部符号 __imp_fftw_free

用fftw库的地方报错了,原来是因为原来的程序里面加进去的fftw库是32位的,把平台换成x64之后不兼容,所以报错。

       升级要多多注意依赖的库的版本,很容易不兼容,解决办法是将原来32位的fftw库换成64位,或者注释掉用到了fftw库的代码。


另外,发现忘了写无法打开cufft.lib文件的解决办法,其实就是在项目->属性->链接器->输入的第一行加上去cufft.lib就可以了,如果还没有找到的话可以在项目属性的附加库目录指定cufft.lib的绝对路径。

0 0
原创粉丝点击