当前位置: 首页 > news >正文

二进制兼容

定义

当库的实现发生变化后,依赖该库的程序无需重新编译,直接使用新版本库即可正常运行(使用动态库实现热更新)

为什么会出现二进制不兼容

程序编译时会将 ABI 的细节(内存布局、函数调用方式、符号名)固化为机器指令
OR
程序编译时会将对类成员变量的访问变为基于类首地址偏移量的访问
将对虚函数的访问变为对虚函数表指定偏移位置的访问
始终按照编译时函数调用约定与函数名去调用函数(包括内联函数)
OR
只要确保ABI不变,即使暴露在外的函数其内部实现发生变化仍为二进制兼容(如仅对传入数据进行计算的函数,即使改变计算方式对函数实现进行修改,仍能保证二进制兼容)

常见方法

确保暴露的类具体实现不会发生变化,将声明与实现分离
pImpl技法:所有暴露的类仅包含指向具体实现类的指针+用于请求转发的成员函数组成

http://www.gsyq.cn/news/69152.html

相关文章:

  • 成群结队--冲刺计划
  • 第五天敏捷冲刺
  • Java进阶网络编程,UDP,TCP通信
  • IDEA标签窗口好行显示 类注释和方法注释
  • LabVIEW用直线边缘检测实现液位测量 - 教程
  • HEK293细胞:为什么它是重组蛋白表达的黄金标准?
  • 树莓派Docker部署AdGuard Home
  • 人工智能发展史简述
  • 第四天敏捷冲刺
  • 读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter1Chapter2
  • Java创建对象完整流程详解
  • re笔记5
  • 北京陪诊公司排行:专业服务破解就医难题,三甲机构树立行业标杆
  • 北京上门收酒茅台五粮液洋酒老酒名酒董酒习酒
  • 北京上门收酒茅台五粮液洋酒老酒名酒
  • this view is read-only (IntelliJ IDEA) - 详解
  • 内存管理-55-工具-page_types - Hello
  • 2025年LED显示屏经销最新推荐,室内LED显示屏,户外LED显示屏,单色LED显示屏,全彩LED显示屏选择指南!
  • 糖尿病预测(较好的代码)
  • 北京上门收酒
  • AIM:用 AI 写 Git 提交信息
  • rllm中的推理流程
  • 第2天敏捷冲刺 - Helen
  • OOP-实验4
  • 成群结队-冲刺日志(阶段一)
  • 成群结队-冲刺日志(阶段三)
  • POLIR-Logic-逻辑学: Propositional→FOL→SOL→HOL→Categoties
  • 集成光子技术革新AI数据中心,提升能效与带宽
  • STM32F103ZET6开发板串口只发不收问题解决 - PC2005
  • 做题记录(Dec.)