【问题标题】:Shared library: break the ABI compatibility without breaking API compatibility共享库:在不破坏 API 兼容性的情况下破坏 ABI 兼容性
【发布时间】:2014-06-06 08:26:34
【问题描述】:

对于纯 C 共享库,是否有可能在不破坏 API 兼容性的情况下破坏 ABI 兼容性?

另外,如果一个库 A 提供了现有库 B 的所有 API 函数,以及一些额外的 API 函数,那么库 A ABI 是否与库 B 兼容?

【问题讨论】:

    标签: c api shared-libraries abi


    【解决方案1】:

    如果这回答了您的第一个问题,您可以在实现相同 API 的两个库中使用不同的调用约定。

    对于第二个问题:您可以更改例如一个结构指针,指向函数声明中另一个结构的指针。根据标准,它们必须具有相同的表示和对齐要求,但是 API 发生了变化(并且调用 A 的该函数的代码必须更改为调用 B 中的相同函数才能编译)。

    【讨论】:

      【解决方案2】:

      第一个问题:如果“API 兼容性”是指源代码兼容性,那么更改调用约定或用户定义类型的内容会这样做。

      第二个问题:这可能取决于平台或编译选项,但可以。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2011-11-10
        • 2016-10-29
        • 2021-05-18
        • 1970-01-01
        • 2019-08-29
        • 1970-01-01
        相关资源
        最近更新 更多