7

我正在尝试编译一个使用 cusparse 库的 cuda 程序。我收到链接错误:

kernel.cu.obj : error LNK2019: unresolved external symbol _cusparseSetMatIndexBase@8 referenced in function _main

还有很多与 cusparse 库相关的同类错误。我已经包含了“cusparse_v2.h”。如何在编译期间链接 Visual Studio 2010 中的 cusparse 库?

4

2 回答 2

13

链接库的一般说明并不特定于 CUDA。因此,您可能想了解更多有关使用 MS VS的信息。无论如何,步骤是这样的:

  1. 确保您已打开要处理的项目。
  2. 选择 View...Property Pages(从菜单中) 将打开一个新对话框。
  3. 在此对话框的左侧,选择链接器以打开它的子​​菜单
  4. 在链接器下,选择输入
  5. 现在,在右侧的窗格中,观察第一项是“附加依赖项”。我相信cudart.lib应该已经在那里了。
  6. 单击右侧的cudart.lib 您现在可以键入要添加的新库。输入一个空格(与 cudart.lib 分开)并输入cusparse.lib
  7. 现在单击对话框右下角的“应用”。

如果您的项目/解决方案文件已经使用 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 位项目的支持。

于 2012-11-27T16:38:17.897 回答
0

我通过以下步骤修复了它:

  1. 添加 cuda 路径:转到:“配置属性->链接器->常规->附加库目录”并将 $(CudaToolkitLibDir) 添加到列表中。

  2. 添加 cuda 实时库:转到:“Solution Properties->Linker->Input->Additional Dependencies”并将 cudart.lib 添加到列表中。

  3. 添加 cublas 库:转到:“Solution Properties->Linker->Input->Additional Dependencies”并将 cublas.lib 添加到列表中。

  4. 将平台更改为 x64:转到:“配置属性->平台”并将其设置为 x64。

  5. 以管理员身份运行 cmd.exe。输入并运行以下两行命令:

netsh winsock 重置目录

netsh int ip reset reset.log 命中

可能会说需要重新启动,但实际上这不是必需的。再次尝试调试您的应用程序,问题应该得到解决。

于 2017-01-25T22:50:08.377 回答