如何解决将一个库基于 C++与另一个库基于 CUDA链接时无法解决 LNK2019 和 LNK2021 错误
我正在尝试将一个库从 Linux 移植到 Windows,该库由两个库组成,一个是完全基于 CUDA 的库,单独构建,另一个是基于 C++ 并链接到基于 CUDA 的库。
该库使用了 MSVC 不允许的动态数组,因此我将它们转换为向量并在 Linux 上成功测试它们,但在 Windows 上我遇到了一堆 Windows 链接器问题,例如 LNK2019
和 {{1 }},主要是当C++库中的函数引用基于CUDA的库中的函数时,例如:
错误 LNK2019:未解析的外部符号“void __cdecl activationMishForward(float *,float *,int,struct CUstream_st *)" (?activationMishForward@@YAXPEAM0HPEAUCUstream_st@@@Z) 中引用 函数“公共:虚拟 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 *)
在库中找不到,即使它的一种类型的参数与库中的参数不匹配,结果也会相同。
确保您使用的函数与库中定义的完全相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。