c++ - 无法使用基类构建 DLL

标签 c++ dll linker-errors compiler-warnings

为了让它很短, 1. 我在 VC++ 2010 中构建一个 DLL(动态) 2. 我有两个要导出的类 a)A类是基类 b) 继承 A 的 B 类 3. 这些在两个单独的文件中 ClassA.h 和 ClassB.h 两个实现都在各自的 cpp 文件中,并且在同一个项目下 4.我在两个头文件中都有如下符号

#ifdef COLLECTIONS_LIB
#define COLLECTIONS_LIB_EXPORT __declspec(dllexport)
#else
#define COLLECTIONS_LIB_EXPORT __declspec(dllimport)
#endif
  1. A类有一个虚函数calculate()
  2. 这两个类在namespace CollectionsLib下

现在每当我构建时我都会收到警告 LNK4217

locally defined symbol ??ClassA@CollectionsLib@@QAE@XZ (public: __thiscall CollectionsLib::Class::~Class(void)) imported in function __unwindfunclet$??0ClassA@CollectionsLib@@QAE@V?$Point_@H@cv@@HHV?$Scalar_@N@3@HI@Z$0

我只是不明白为什么它会向我显示此错误。为什么是析构函数?

非常感谢任何指导。

最佳答案

找到那个析构函数的定义。您可能会在两个或更多地方或在 haeder 中找到它。

当您有函数 __declspec(dllimport) 但定义了非内联主体,或 __declspec(dllexport) 和 multidefined 时,会发出此警告。

关于c++ - 无法使用基类构建 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332327/

相关文章:

c++ - 可以在卸载主机 DLL 之前卸载通过导入库链接的 DLL 吗?

ios - 添加 crashlytics 和 fabric 时出现重复符号链接(symbolic link)器错误

c - 头文件中声明函数的链接器混淆 (C)

c++ - 如何在 Qt 中以编程方式调整拆分器小部件的大小?

c++ - 究竟什么是结(b 样条)

c++ - C++可以从DLL中导出类吗

C++/CLI 包装器 LNK2028 和 LNK2019 错误

c++ - Qt 中的警告 lnk4006

c++ - 仅使用 <iostream> c++ 读取 .csv 文件并存储到数组中

c++ - 创建一个执行 lambda 函数的函数。我必须分别处理 void 和 non void 吗?