简而言之,
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)并被多重定义时,将发出此警告。

10-08 02:20