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