0

简而言之, 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. 这两个类在namespaceCollectionsLib下

现在每当我构建我的警告 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

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

非常感谢任何指导。

4

1 回答 1

2

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

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

于 2013-06-27T00:09:51.520 回答