为了让它很短, 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
- A类有一个虚函数calculate()
- 这两个类在
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/