我在CUDA4.0+VS2008的平台上运行CUFFT,来实现FFT进行一维卷积,出现如下错误:
CUFFT.cu.obj : error LNK2019: 无法解析的外部符号 _cufftDestroy@4,该符号在函数 “void __cdecl runTest(int,char * *)” (?runTest@@YAXHPAPAD@Z) 中被引用
1>CUFFT.cu.obj : error LNK2019: 无法解析的外部符号 _cufftExecC2C@16,该符号在函数 “void __cdecl runTest(int,char * *)” (?runTest@@YAXHPAPAD@Z) 中被引用
1>CUFFT.cu.obj : error LNK2019: 无法解析的外部符号 _cufftPlan1d@16,该符号在函数 “void __cdecl runTest(int,char * *)” (?runTest@@YAXHPAPAD@Z) 中被引用
1>…/…/bin/win32/Debug/simpleCUFFT.exe : fatal error LNK1120: 3 个无法解析的外部命令;
请问大家这是什么原因??
LZ您好,您可以如下解决:
在VS中,项目——属性——在属性页中选配置属性——链接器——输入——附加依赖项——在这里添加 cufft.lib
(如果您是英文版的VS,则为Project->Properties, 弹出Property Pages窗口,Configuration Properties->linker->input 在第一栏里面加上 cufft.lib)
如上,重新编译,应当已经解决此问题。
祝您好运~
您客气了,十分荣幸能为您解答问题,这是我和其他版主的责任所在。
祝您在cudazone过得愉快~
版主,刚才按照您的方法做了,但是编译的时候出现1》LINK:fatal error:LNK1104:无法打开文件“cufft.lib”这个错误,是什么原因?
LZ您好,您的项目配置可能有些问题。
您看一下 项目——属性——配置属性——链接器——常规——附加库目录 这里内容是什么。
如果是类似于“$(CUDA_PATH)/lib/$(PlatformName)”,应该能找到您要的cufft.lib。
此外,您是如何建立cuda工程的呢?
现在推荐使用CUDA5 自带的模板全自动配置哦,CUDA4时代需要安装nsight才能起到类似的效果。
您不妨试试CUDA5。
祝您好运。
版主您好:
我的系统是xp 32bit的,用的VS2008版本的,CUDA4.0,前几天下载了一个CUDA5.0,在配置设置方面比较生疏。我的系统由于工作原因没法更改,所以VS2010+CUDA5.0+winxp32可以使用吗?
LZ您好,nvidia CUDA Toolkit 5.0的官方下载页面在这里,有WINXP的版本,所以应该是可以用的。
https://developer.nvidia.com/cuda-downloads
VS2010的话,据说需要WINXP SP3,再手工安装.netframework的数个版本才行,比较折腾。(win7的话自带.netframework)
因此,您说的“VS2010+CUDA5.0+winxp32”应该是可以的,但是我这里没有条件试验,您不妨一试。
此外winXP下无法使用nsight调试CUDA程序。
祝您好运~
-------------------------临时解决方法的分割线-----------------------------
如果您打算先使用当前的环境,那么作为应急,按照2#方法添加cufft.lib的时候,可以使用带有全部绝对路径的方法,需要用双引号将全部路径连同cufft.lib引起来。这样VS应该不会再找不到该lib文件。
此外CUDA5应该还是支持VS2008的,如果您想继续使用VS2008也是可以的,不过VS2010更胜一筹,推荐升级。