从导出到DLL的类继承时,C++有什么缺点?

从导出到DLL的类继承时,C++有什么缺点?,c++,inheritance,dll,visual-studio-2005,C++,Inheritance,Dll,Visual Studio 2005,我有几个库,每个库都编译为DLL,它们被一些应用程序使用。我刚刚在其中一个库LIB_1中开发了一个类,它继承了另一个库LIB_2中的类B,因此,它被编译到另一个DLL中 到目前为止,我看不出这个解决方案有任何明显的缺点。另一种方法是复制类_a并将其放入LIB2中,这样类_B就可以从中继承,但我希望避免这种解决方案,因为我希望避免使用“相同”基类的两个不同版本 从DLL中的类继承有什么重要的缺点吗 非常感谢 在设计说明中,没有真正的问题。依赖关系树稍微复杂一点,例如,如果主程序直接使用类a和类B:

我有几个库,每个库都编译为DLL,它们被一些应用程序使用。我刚刚在其中一个库LIB_1中开发了一个类,它继承了另一个库LIB_2中的类B,因此,它被编译到另一个DLL中

到目前为止,我看不出这个解决方案有任何明显的缺点。另一种方法是复制类_a并将其放入LIB2中,这样类_B就可以从中继承,但我希望避免这种解决方案,因为我希望避免使用“相同”基类的两个不同版本

从DLL中的类继承有什么重要的缺点吗


非常感谢

在设计说明中,没有真正的问题。依赖关系树稍微复杂一点,例如,如果主程序直接使用类a和类B:

EXE
 +--------+
 v        v
LIB_1    LIB_2
 |
 v
LIB_2
主要问题是二进制兼容性。除非您使用的是纯虚拟接口,否则您的LIB将是可继承的,并且只能用于使用同一编译器的相同版本、具有兼容设置(即兼容编译器选项)的可执行文件或DLL

除了二进制兼容性,DLL通常可以有自己的堆空间。即使使用纯虚拟接口,您也需要注意dll中使用了哪种CRT如果dll分配内存,那么只有这个dll应该解除分配内存,因此相同的CRT用于malloc/free


您可以阅读和了解更多信息。在处理如何在DLL中导出类时,这也是一本非常有趣的书。

在设计说明中,没有真正的问题。依赖关系树稍微复杂一点,例如,如果主程序直接使用类a和类B:

EXE
 +--------+
 v        v
LIB_1    LIB_2
 |
 v
LIB_2
主要问题是二进制兼容性。除非您使用的是纯虚拟接口,否则您的LIB将是可继承的,并且只能用于使用同一编译器的相同版本、具有兼容设置(即兼容编译器选项)的可执行文件或DLL

除了二进制兼容性,DLL通常可以有自己的堆空间。即使使用纯虚拟接口,您也需要注意dll中使用了哪种CRT如果dll分配内存,那么只有这个dll应该解除分配内存,因此相同的CRT用于malloc/free


您可以阅读和了解更多信息。在处理如何在DLL中导出类时,这也是一本非常有趣的书。

还有一件事:DLL可以有自己的堆空间。对于聚合类来说,使用哪个堆空间可能是一个大问题?这是真的,我添加了它,尽管我链接的上一篇文章中已经介绍了它。还有一件事:DLL可以有自己的堆空间。对于聚合类来说,使用哪个堆空间可能是一个大问题?这是真的,我添加了它,尽管我链接的上一篇文章中已经介绍了它。