Windows 中的 C++:头文件更改后,仅编译派生类或不编译

c++ in windows: after header file change, only compiling derived classes or not?

本文关键字:编译 派生 C++ 中的 文件 Windows      更新时间:2023-10-16

>更新:

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

为此进行了辩论,

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

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

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

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

这个问题可能问得太笼统了,如果我应该提供任何其他细节,请告诉我。真的需要学习编译和链接的东西。

谢谢!

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

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

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