c++ - 将一个库(基于 C++)与另一个库(基于 CUDA)链接时无法解决 LNK2019 和 LNK2021 错误
问题描述
我正在尝试将一个库从 Linux 移植到 Windows,该库由两个库组成,一个是完全基于 CUDA 的库,它是单独构建的,另一个是基于 C++ 的,并且链接到基于 CUDA 的库。
该库使用了 MSVC 不允许的动态数组,因此我将它们转换为向量并在 Linux 上成功测试它们,但在 Windows 上,我遇到了一堆 Windows 链接器问题,例如LNK2019
and LNK2001
,主要是当 C++ 库中的函数引用基于 CUDA 的库中的那些,例如:
错误 LNK2019:在函数“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 *)
在库中没有找到,即使它的一种参数类型与库中的参数类型不匹配,结果也是一样的。
确保您使用的函数与库中定义的完全一致。
推荐阅读
- android - 如何在小部件android中更改图像的背景颜色
- javascript - 仅使用 javascript 在文章中插入 div
- docker - 多个客户端的多个 docker 实例
- reactjs - React Native 中的流式音频记录
- cascade - TypeORM 级联选项:cascade、onDelete、onUpdate
- java - 如何在 SpringBoot 运行时更改属性值而不重新启动/重新部署应用程序
- javascript - 使用javascript swagger客户端上传文件时遇到问题并做出反应
- .net - UWP WebView 第三方替代品
- wpf - 不能将字符串隐式转换为视图模型
- ios - iOS 共享扩展 - loadItemForTypeIdentifier 调用返回 iOS11 中的文件 url 和 iOS12 中的文件内容