无法使用基类构建DLL

时间:2013-06-26 23:51:20

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

要做得很短, 1.我在VC ++ 2010中构建DLL(动态) 我有两个我要导出的课程   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
  3. 现在每当我建立警告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
    

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

    非常感谢任何指导。

1 个答案:

答案 0 :(得分:2)

找到该析构函数的定义。可能你会在两个或更多的地方或在海滩上找到它。

当你有一个__declspec(dllimport)函数但是定义了非内联体,或者__declspec(dllexport)和multidefined时,会发出这个警告。