【问题标题】:Unresolved External Symbols when using CUDA Driver API VS2012使用 CUDA 驱动程序 API VS2012 时未解析的外部符号
【发布时间】:2013-10-05 20:20:41
【问题描述】:

我一直在尝试使用 CUDA 驱动程序 API 来加载一个 .ptx 文件并使用以下代码从中加载一个函数:

CUdevice device;
cuDeviceGet(&device,0);
CUcontext ctx;
cuCtxCreate(&ctx,0,device);
CUmodule mod;
cuModuleLoad(&mod,"kernel.ptx");
CUfunction func;
cuModuleGetFunction(&func,mod,"kernel");
CUdeviceptr ints;
cuMemAlloc(&ints,(sizeof(int)*30));

但是在编译时我得到了这些错误:

    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuDeviceGet@8 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuCtxCreate_v2@12 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuModuleLoad@8 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuModuleGetFunction@12 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuMemAlloc_v2@8 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuMemcpyHtoD_v2@12 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuMemcpyDtoH_v2@12 referenced in function _main
    1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuLaunchKernel@44 referenced in function _main

我在 VS2012 中创建了一个新的 CUDA 5.5 项目并将其直接输入到生成的 .cu 文件中,但是在编译时我得到了这些错误。如果我进行不使用驱动程序 api 的测试,我不会收到任何错误!

【问题讨论】:

  • 请不要使用 pastebin。编辑问题本身中的相关信息。
  • 查看此链接:Windows CUDA 5 and Visual Studio 2012。关键是要正确设置 Visual Studio。
  • cuda 安装程序(至少是最新的)在安装时会自动执行此操作。该链接上给出的代码将毫无问题地编译!我正在考虑链接器的问题,但我似乎找不到任何东西。
  • 你链接到 cuda.lib 了吗?
  • @LucasS:也许您可以将其添加为问题的答案(允许回答您自己的问题)。这样,问题就会从未回答的队列中消失,并为下一个遇到此问题的人留下一个干净的解决方案。

标签: c++ visual-studio-2012 cuda


【解决方案1】:

当您没有链接到 cuda.lib 时会发生这些错误。

【讨论】:

    【解决方案2】:

    对于那些像我一样不知道如何将cuda.lib添加到链接过程中的人(使用VS2017):

    1. 右击项目,进入菜单底部Properties

    2. 转到Linker-->Input

    3. Additional Dependencies 中,确保cuda.lib 在那里。就我而言,这解决了 2019 年的链接错误。

    4. 此外,如果您单击下拉菜单中的edit 项,则有一个Macros 按钮,您可以单击该按钮并查看您的VS 项目中的所有预定义宏。

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 2011-01-04
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      相关资源
      最近更新 更多