gpt4 book ai didi

CUDA链接错误: unresolved external but external is specified in *. cu文件

转载 作者:行者123 更新时间:2023-12-01 01:12:47 32 4
gpt4 key购买 nike

使用 Cuda 5.0、VS2010

这个项目在 VS2012 中编译和链接很好,但是 VS2012 不支持 Nsight 调试所以我也在 VS2010 中开发。所以我有一个 VS2010 项目文件,但我使用相同的源代码文件(.h、.cpp、.cu、.cuh。

VS2010 build 编译一切正常,但链接报告错误与 Unresolved external :

 Generating Code...
1>videoFuncUnThread.obj : error LNK2019: unresolved external symbol _runKernel referenced in function "void __cdecl videoFuncUnThread(int,bool,unsigned int * const)" (?videoFuncUnThread@@YAXH_NQAI@Z)
1>D:\StrApp\Viper1B_10\Viper1B_10\Debug\Viper1B_10.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
1>

缺少的符号 runKernel 是调用设备端模块(驻留在 PTX 文件中)的主机端模块。

当我搜索所有出现的 runKernel 时,我得到 3 行:
filter.cu(127):                     extern "C" CUresult runKernel (int numFrames,     cudaStream_t stream, bool firstBatch, int* searchLimit) { ... } // module code 
videofuncunthread.cpp(28): extern "C" CUresult runKernel(int numFrames, cudaStream_t stream, bool firstBatch, int* search); //
videofuncunthread.cpp(137): CUresult resultKernel = runKernel( NinBatch, gStream, firstBatch, (int *)searchLimit);

由于“filter.cu”编译它意味着调用行(137)与原型(prototype)声明(28)一致;您还可以看到 filter.cu 中的定义与原型(prototype)相同。

最后,我注意到我已经成功编译、链接和运行了 VS2010 上 cuda 5.0 示例中的示例。我已经验证我在两个项目中使用相同的 Cuda 构建规则,并且我的项目和 Cuda 示例项目之间的项目属性是相同的。

您可以提供的任何见解或建议将不胜感激。

谢谢

最佳答案

您确定 VS2010 正在构建和链接您的 CUDA 代码吗?见 this answer有关设置 VS2010 的说明,特别是启用 CUDA 构建自定义。另请注意,如果您添加了 .cu构建自定义之前的文件,那么您需要设置 .cu 的类型文件到 CUDA C/C++ (右键单击文件,属性,设置项目类型)。

一项快速检查是更改 .cu文件并确保它正在重新编译。

关于CUDA链接错误: unresolved external but external is specified in *. cu文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328491/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com