如果类接口(interface)没有改变,但它的实现改变了, (以及相应的包含类功能代码的库文件)客户端代码(驱动程序应用程序)是否需要重新编译?
如果驱动程序应用程序在上述更改后不需要重新编译,则可执行文件将如何在新库中找到已编辑方法的新位置(包含新类的已编辑功能的库)?
最佳答案
ABI 很大程度上依赖于编译器供应商和版本。您可能不会重建驱动程序应用程序,但您必须非常非常小心。使用纯虚拟成员/函数定义您的接口(interface),不使用任何数据,最好是在您根本不接触的单独包含文件中。
必须通过硬文件移动或更改对动态链接器将查找 .dll/.so 文件的引用来替换加载模块中的 .dll 或 .so 文件(或等效文件)。在 unix/linux 上,通常有一个名为 LD_LIBRARY_PATH 的环境变量
关于c++ - 类和重新编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805445/