sho*_*osh 5 c++ dll abstract-class export interface
我有两个DLL a.dll和b.dll,每个我有一个类AClass和BClass.
我想让AClass和BClass继承并实现相同的接口AbsBase,这是一个纯抽象类.
在每个类中,我为__declspec(dllimport)和__declspect(dllexport)设置了#defines.当我尝试编译时,我得到了这个:
警告C4275:非dll接口类'AClass'用作dll接口类'AbsBase'的基础
这基本上要我将AbsBase声明为__declspec(dllexport)
但是如果编译器按照他的方式使用它,我将不得不声明从a.dll和b.dll导出AbsBase.
为什么需要导出类的接口?
它有什么办法吗?我应该从两个DLL中真正导出AbsBase吗?这有什么本质上的错误吗?(我需要定义一个新的XXX_EXPORT宏..)
它看起来像是编译器警告而不是错误,所以它应该仍然有效。编译器只是让你知道你正在做一些很容易搞砸的事情。只要 DLL 和核心程序都同意基类的定义,这样做应该是完全可以接受的。
您应该能够使用编译指示来抑制警告:
http://forums.devx.com/archive/index.php/t-84785.html