c++ - 类和重新编译

标签 c++ abi

如果类接口(interface)没有改变,但它的实现改变了, (以及相应的包含类功能代码的库文件)客户端代码(驱动程序应用程序)是否需要重新编译?

如果驱动程序应用程序在上述更改后不需要重新编译,则可执行文件将如何在新库中找到已编辑方法的新位置(包含新类的已编​​辑功能的库)?

最佳答案

ABI 很大程度上依赖于编译器供应商和版本。您可能不会重建驱动程序应用程序,但您必须非常非常小心。使用纯虚拟成员/函数定义您的接口(interface),不使用任何数据,最好是在您根本不接触的单独包含文件中。

必须通过硬文件移动或更改对动态链接器将查找 .dll/.so 文件的引用来替换加载模块中的 .dll 或 .so 文件(或等效文件)。在 unix/linux 上,通常有一个名为 LD_LIBRARY_PATH 的环境变量

关于c++ - 类和重新编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805445/

相关文章:

C++ fread() 到 std::string

java - Eclipse 是否必须处理 C++ ABI 兼容性问题?

c++ - AMD64 ABI 中的空类会怎样?

c++ - API 和 ABI 简而言之

c++ - 如何将bmp加载到GLubyte数组中?

c++ - 使用模板设置类成员是否为 const

c++ - C++ 中的 CURL Post 方法

linker - 在什么情况下 C 编译器可以忽略调用约定?

c++ - 关于修改虚表绕道的问题

c++ - 模板类 + 委托(delegate)构造函数 = 字段未初始化? ( clang )