[发明专利]一种跨平台的ABI兼容C++组件框架的实现方法有效

专利信息
申请号: 202010961266.8 申请日: 2020-09-14
公开(公告)号: CN112148283B 公开(公告)日: 2023-09-22
发明(设计)人: 张铭雨;叶雨桐 申请(专利权)人: 第六镜科技(成都)有限公司
主分类号: G06F8/36 分类号: G06F8/36;G06F8/41
代理公司: 北京华清迪源知识产权代理有限公司 11577 代理人: 杜立军
地址: 610093 四川省成都市中国(四川*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 平台 abi 兼容 c++ 组件 框架 实现 方法
【说明书】:

本申请实施例提供一种跨平台的ABI兼容C++组件框架的实现方法,该方法提出采用现代C++实现的跨平台(即与操作系统无关)的ABI兼容组件框架。该ABI兼容组件框架采用布局稳定的ABI接口类型为基础,构建专有类型系统,然后构建该专有系统中的ABI接口类型与实现函数之间的对应关系,根据该对应关系,操作系统中的编译器在对C++程序进行编译时根据该对应关系调用ABI接口类型的函数。ABI接口类型具有稳定性,使用期构建底层系统,再将其与C++程序中的函数相关联,使得在不同版本的编译器生成的可执行文件中的布局是不变的,也即他们是兼容的。

技术领域

发明实施例涉及计算机技术领域,具体涉及一种跨平台的ABI兼容C++组件框架的实现方法。

背景技术

C++的ABI(Application Binary Interface——C++应用程序二进制接口)定义了C++语言和操作系统间调用的低级别接口规范。它描述了一个数据类型的内存布局、导出符号和调用约定。ABI兼容指的是,两种不同版本的C++编译器编译同样的代码,生成的可执行文件互相兼容,可以被第三方正确调用而无需以第三方的配置环境重新编译源代码。由于各大厂商提供的C++标准库实现几乎不兼容,导致不同厂商、不同版本的C++编译器编译同样代码生成的可执行文件ABI不兼容。这成为业内饱受诟病的问题。

针对这个问题,目前各大主流操作系统有自己的解决方案。一是windows操作系统,微软公司在windows操作系统内提供了一个兼容的包装层--COM(Component ObjectModel,组件对象模型),这是一个针对C++语言的兼容性框架,若遵守该框架的协定编写C++程序则编译出的可执行文件在Windows操作系统下是ABI兼容的,无需担心不同版本的编译器的兼容性问题;二是GNU/Linux操作系统,GNU的GCC编译器及LLVM的clang编译器,遵守Itaninum ABI规范。它在一定的编译器大版本范围内,保持了C++标准库的ABI稳定性,这样也在一定程度上解决了ABI兼容性的问题。

但是,上述两种方式还存在如下问题:一是复杂性较高,Windows为了规避ABI兼容性问题,要求用户必须使用复杂的COM框架,这样就无法使用标准的C++类型作为对外接口,丧失了C++语言的部分功能。二是非跨平台,现有方案在Windows操作系统等主流系统采用各自的平台相关方案,导致同一个类库在不同操作系统需分别编写对外接口,增加了一倍的工作量。三是操作系统耦合性强,现有方案在Windows操作系统必须大量使用Windows系统API,很难利用纯C++语言实现全部功能,不利于开源项目及跨平台项目的研发。

发明内容

为此,本发明实施例提供一种跨平台的ABI兼容C++组件框架的实现方法,该方法提出采用现代C++实现的跨平台(即与操作系统无关)的ABI兼容组件框架。该ABI兼容组件框架采用布局稳定的ABI接口类型为基础,构建专有类型系统,然后构建该专有系统中的ABI接口类型与实现函数之间的对应关系,根据该对应关系,操作系统中的编译器在对C++程序进行编译时根据该对应关系调用ABI接口类型的函数。ABI接口类型具有稳定性,使用期构建底层系统,再将其与C++程序中的函数相关联,使得在不同版本的编译器生成的可执行文件中的布局是不变的,也即他们是兼容的。其具体技术方案如下:

根据本发明实施例提供的一种跨平台的ABI兼容C++组件框架的实现方法,包括步骤:

以泛型ABI接口类型为基础,构建底层专有ABI接口类型系统;其中,所述ABI接口类型包括纯虚函数,所述纯虚函数的参数均为基本类型;

将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;

调用C++程序对应实现类型中相应函数时,通过所述静态绑定的关系,导出所述ABI接口类型。

进一步的,所述底层专有ABI接口类型系统的构建包括步骤:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于第六镜科技(成都)有限公司,未经第六镜科技(成都)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010961266.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top