windows中的c++:头文件更改后,是否只编译派生类?

问题描述 投票:0回答:1

更新:

谢谢大家的热心回复。看来我有点困惑了。更改是向基类添加一个新的成员函数。我刚刚意识到也许我确实需要重新编译依赖于导出此类的 dll 的所有内容,因为符号表中函数名称的地址发生了变化。请确认我是对还是错。

为此陷入争论,

当某些基类中的成员函数发生更改时,我只重新编译了从该基类派生的所有类,并遇到了一些运行时错误。

在辩论的另一边,我被告知我应该重新编译所有“依赖于”这个基类的类。

  1. 我不确定这是否正确?因为我正在构建 DLL,并且我始终理解这种动态链接的想法是不要重新编译。

  2. 如果是真的,我也想知道这里的“依赖”是什么样的?

这个问题可能问得太笼统,请告诉我是否需要提供任何其他详细信息。真的需要学习编译和链接的东西。

谢谢!

c++ oop dll
1个回答
1
投票

DLL 和类不能很好地协同工作。 (在 DLL 中使用类没问题,但当您尝试导出它们时就会遇到问题。)

因此,组件/对象系统(例如 COM、ActiveX、CORBA)定义了一个将用户与实现分开的接口。 如果 DLL 的公共 API 仅使用指向仅具有纯虚函数的类型的指针,则它在 DLL 和调用者之间没有共享布局。

如果您尝试与数据或内联函数共享类,则您具有紧密耦合,并且需要重新编译所有用户以进行最轻微的实现更改。

© www.soinside.com 2019 - 2024. All rights reserved.