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