更新:
为此陷入争论,
当某些基类中的成员函数发生更改时,我只重新编译了从该基类派生的所有类,并遇到了一些运行时错误。
在辩论的另一边,我被告知我应该重新编译所有“依赖于”这个基类的类。
我不确定这是否正确?因为我正在构建 DLL,并且我始终理解这种动态链接的想法是不要重新编译。
如果是真的,我也想知道这里的“依赖”是什么样的?
这个问题可能问得太笼统,请告诉我是否需要提供任何其他详细信息。真的需要学习编译和链接的东西。
谢谢!
DLL 和类不能很好地协同工作。 (在 DLL 中使用类没问题,但当您尝试导出它们时就会遇到问题。)
因此,组件/对象系统(例如 COM、ActiveX、CORBA)定义了一个将用户与实现分开的接口。 如果 DLL 的公共 API 仅使用指向仅具有纯虚函数的类型的指针,则它在 DLL 和调用者之间没有共享布局。
如果您尝试与数据或内联函数共享类,则您具有紧密耦合,并且需要重新编译所有用户以进行最轻微的实现更改。