我正在尝试编译一个使用cusparse库的cuda程序。我收到链接错误:
kernel.cu.obj : error LNK2019: unresolved external symbol _cusparseSetMatIndexBase@8 referenced in function _main
和cusparse库有很多相同的错误。我已经包含了“cusparse_v2.h”。 如何在编辑期间链接visual studio 2010中的cusparse库?
答案 0 :(得分:7)
链接库的一般说明并非特定于CUDA。因此,您可能想了解有关using MS VS的更多信息。无论如何,步骤是这样的:
cudart.lib
应该已经存在。cudart.lib
右侧您现在可以输入要添加的新库。键入一个空格(与cudart.lib分开)并键入cusparse.lib
如果您的项目/解决方案文件已使用cuda模板设置,那么应该是所有需要的。如果cudart.lib不存在,或者您的项目/解决方案文件尚未理解cuda,那么这是一个单独的问题。在这种情况下,我建议重新开始,通过克隆来自Samples的项目,并使用它作为起点构建项目。然后它将获取所有正确的搜索目录以及cuda构建规则。由于所有主要的cuda库(cudart,cublas,cufft,cusparse等)都在同一个位置,因此相同的搜索路径应根据需要选择其中任何一个。
如果您想要关联其他库,例如cublas.lib
,您可以按照类似的顺序,将上面的cusparse.lib
替换为cublas.lib
请注意,对于较新版本的CUDA(例如CUDA 7.5),仅需要构建一个64位项目(在修改x64项目属性时,请按照上述步骤进行操作。)CUDA 7.5及更高版本正在降低对32-的支持比特项目。
答案 1 :(得分:0)
我按照以下步骤修复了它:
添加cuda路径: 转到:“配置属性 - >链接器 - >常规 - >其他库管理目录”并将$(CudaToolkitLibDir)添加到列表中。
添加cuda实时库: 转到:“解决方案属性 - >链接器 - >输入 - >附加依赖关系”并将cudart.lib添加到列表中。
添加cublas库: 转到:“解决方案属性 - >链接器 - >输入 - >附加依赖关系”并将cublas.lib添加到列表中。
将平台更改为x64: 转到:“配置属性 - >平台”并将其设置为x64。
以管理员身份运行cmd.exe。 输入并运行以下两行命令:
netsh winsock重置目录
netsh int ip reset reset.log hit
可能会说需要重新启动,但实际上这不是必需的。 尝试再次调试您的应用程序,问题应该解决。