提问人:Harshvardhan Chandirasekar 提问时间:1/25/2021 最后编辑:AbdelAziz AbdelLatefHarshvardhan Chandirasekar 更新时间:1/26/2021 访问量:185
无法解决将一个库(基于 C++)链接到另一个库(基于 CUDA)时LNK2019和LNK2021错误 [已关闭]
Unable to solve LNK2019 and LNK2021 error when linking one lib (C++ based) with another (CUDA based) [closed]
问:
我正在尝试将库从 Linux 移植到 Windows,该库由两个库组成,一个是完全基于 CUDA 的库,单独构建,另一个基于 C++ 并链接到基于 CUDA 的库。
该库使用了 MSVC 不允许的动态数组,所以我将它们转换为向量并在 Linux 上成功测试了它们,但在 Windows 上我遇到了一堆 Windows 链接器问题,例如 和 ,主要是当 C++ 库中的函数引用基于 CUDA 的库中的函数时,例如:LNK2019
LNK2001
错误 LNK2019:未解析的外部符号“void __cdecl 激活MishForward(float *,float *,int,struct CUstream_st *)” (?activationMishForward@@YAXPEAM0HPEAUCUstream_st@@@Z) 引用于 函数 “public: virtual int __cdecl dnn::ActivationMishRT::enqueue(int,void const * const *,void * *,void *,struct CUstream_st *)“ (?enqueue@ActivationMishRT@dnn@tk@@UEAAHHPEBQEBXPEAPEAXPEAXPEAUCUstream_st@@@Z)
即使我没有链接到基于 CUDA 的库,此错误似乎也不会改变,似乎由于某种原因,即使我链接到库,它也无法解析符号。
有人可以解释这里发生了什么以及我应该如何修复链接错误吗?
答:
这意味着您尝试使用的此函数在库中找不到,即使其一种类型的参数与库中的参数不匹配,结果也将是相同的。
确保您使用的函数与库中定义的函数完全相同。 activationMishForward(float *,float *,int,struct CUstream_st *)
评论
DUMPBIN /SYMBOLS
extern "C"