基于银河锐华操作系统的C++适配层[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010866101.2
(22)申请日 2020.08.25
(71)申请人 华东计算技术研究所(中国电子科
技集团公司第三十二研究所)
地址 201800 上海市嘉定区嘉罗路1485号
(72)发明人 王千 陆平 高元钧 徐冬晨 
(74)专利代理机构 上海段和段律师事务所
31334
代理人 李佳俊 郭国中
(51)Int.Cl.
G06F  8/30(2018.01)
G06F  9/445(2018.01)
(54)发明名称基于银河锐华操作系统的C++适配层(57)摘要本发明提供了一种基于银河锐华操作系统的C++适配层,包括:C++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。本发明在JS端能够通过简单的系统接口调用便能够实现与C++代码的交互,不需要引入额外的第三方框架,从而使得应用对C++代
码的调用变得更加简单与安全。权利要求书2页  说明书7页  附图2页CN 112035097 A 2020.12.04
C N  112035097
A
1.一种基于银河锐华操作系统的C++适配层,其特征在于,包括:
C++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;
插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;
插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。
2.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,所述桥接类的主要功能包括:
插件的初始化、插件方法调用;
所述实现桥接类的方法包括:
调用方法的重载实现,调用方法接受JS传递的操作指令,以及指令参数,根据指令插件库进行相应操作决策,并将执行最终结果返回到JS。
3.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,还包括插件回调方法:
通过ID唯一标示每一次回调过程,并使用一个字符串参数传递回调参数,字符串通用需要C++插件库根据需要进行编解码。
4.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,所述统对C ++插件库调用所需的信息包括:
插件库句柄:用于保存C++插件库的句柄;
插件库桥接类实例指针:用于保存桥接类的实例;
回调方法指针:用于保存C++插件库发起对JS调用的入口方法;
注册回调指针方法:用于系统向插件库中进行回调方法的注册;
删除回调指针方法:用于系统移出插件库中的回调方法;
调用方法:用于系统发起对C++插件库的调用;
每当发起加载一个C++插件库的请求时,系统为该插件库动态生成插件模块进行保存;
当使用JS进行C++库调用时,插件库模块管理器将通过C++插件库的句柄调用调用方法;
若C++插件库需要进行回调,需要首先通过注册回调指针方法向插件库中注册回调方法指针进行保存,插件库通过插件模块中保存的回调方法指针进行回调。
5.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,所述插件对象管理器向上层应用封装的接口包括:
C++插件库初始化接口init:用于动态加载指定C++插件库,创建该库的模块实例;
C++插件库调用接口exec:用于调用C++插件库中的指定功能;
注册回调方法接口addListener:用于注册接受并处理C++插件库中回调事件的方法;
移除回调方法接口removeListener:用于停止接受与处理C++插件库中的回调事件;
检测库是否加载接口isloadedlibrary:用于检测某指定C++插件库是否被成功加载;
卸载C++插件库接口unloadlibrary:用于卸载指定的C++插件库。
6.根据权利要求5所述的基于银河锐华操作系统的C++适配层,其特征在于,所述C++适
配层通过接口的方式向上层应用提供与C++插件库的交互调用功能。
7.根据权利要求6所述的基于银河锐华操作系统的C++适配层,其特征在于,所述C++适配层通过接口的方式向上层应用提供与C++插件库的交互调用功能包括:应用通过C++插件库初始化接口init加载指定路径的C++插件库,并为该C++插件库指定一个唯一的标示符;
通过调用执行方法exec指定操作字段,C++插件库根据操作字段进行指定操作;
上层应用调用注册回调方法接口addListener,用于接收处理C++插件库的回调事件,回调事件中包括用于标示每个回调的唯一ID,以及传递的参数,回调事件处理方法通过识别不同的回调ID来进行不同的处理;
当应用于C++插件库的交互调用结束时,通过调用移除回调方法接口removeListener 接口结束C++插件库回调的监听,通过调用卸载C++插件库接口unloadlibrary卸载指定C++插件库。
基于银河锐华操作系统的C++适配层
技术领域
[0001]本发明涉及,具体地,涉及基于银河锐华操作系统的C++适配层。
背景技术
[0002]目前存在的JS/C++混合开发技术使用较多的为nodejs框架以及QWebKit。[0003]对于nodejs框架来说,若要进行JS与C++进行混合编译,需要nodejs扩展模块开发支持包以及node-gyp构建自动化工具支持编译,而这些模块均需要根据不用移动设备进行移植,从而带来较大的工作量以及不可控性,可移植性差。此外,在使用nodejs框架构建工程时,需要编写node包管理文件以及模块描述文件进行大量编译配置工作,使得代码的开发难度,工作量增加。
[0004]而QWebKit则是用于在基于QT框架开发的应用中嵌入Web控件并与之进行交互,并不能满足在基于Html5/CSS/JS框架开发的应用中进行JS/C++混合开发的需求。
[0005]C++适配层通过扩展系统接口的方式实现JS与C++的交互调用,C++代码的编译完全使用系统的编译器进行,使得C++的开发与编译简单易行,不需要由于C++适配层需要运行不同的移动设备上而产生额外的移植工作;此外系统接口的方式也使得在JS端与C++代码的交互变得简单,开发难度大大降低。
[0006]由于Html5/CSS/JS框架的使用使得前段开发变得更加简单、高效,对前端的布局、字体、颜、背景等效果实现了更加精确的控制,且维护成本更低,这些优势使得Html5/ CSS/JS成为前端开发的趋势。但是对于运行在移动操作系统中的应用尤其是系统应用来说,在很多时候需要针对某些特硬件设备进行操控与访问,而Html5/CSS/JS框架很难直接与硬件驱动进行对接;此外,对于一些算法或功能,在很多情况下存在即有的C/C++实现,而对其进行JS移植则存在很大的工作量。这些问题都使得在移动操作系统上实现JS/C++的混合应用开发变得非常必要。而C++适配层的实现能够在对现有的C++代码进行简单封装后实现与JS的交互调用,从而最大限度的实现代码的复用,减少开发成本。
发明内容
[0007]针对现有技术中的缺陷,本发明的目的是提供一种基于银河锐华操作系统的C++适配层。
[0008]根据本发明提供的一种基于银河锐华操作系统的C++适配层,包括:
[0009]C++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;
[0010]插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;
[0011]插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。
[0012]优选地,所述桥接类的主要功能包括:
[0013]插件的初始化、插件方法调用;
[0014]所述实现桥接类的方法包括:
[0015]调用方法的重载实现,调用方法接受JS传递的操作指令,以及指令参数,根据指令插件库进行相应操作决策,并将执行最终结果返回到JS。
[0016]优选地,还包括插件回调方法:
[0017]通过ID唯一标示每一次回调过程,并使用一个字符串参数传递回调参数,字符串通用需要C++插件库根据需要进行编解码。
[0018]优选地,所述统对C++插件库调用所需的信息包括:
[0019]插件库句柄:用于保存C++插件库的句柄;
[0020]插件库桥接类实例指针:用于保存桥接类的实例;
[0021]回调方法指针:用于保存C++插件库发起对JS调用的入口方法;
[0022]注册回调指针方法:用于系统向插件库中进行回调方法的注册;
[0023]删除回调指针方法:用于系统移出插件库中的回调方法;
[0024]调用方法:用于系统发起对C++插件库的调用;
[0025]每当发起加载一个C++插件库的请求时,系统为该插件库动态生成插件模块进行保存;
[0026]当使用JS进行C++库调用时,插件库模块管理器将通过C++插件库的句柄调用调用方法;
[0027]若C++插件库需要进行回调,需要首先通过注册回调指针方法向插件库中注册回调方法指针进行保存,插件库通过插件模块中保存的回调方法指针进行回调。
[0028]优选地,所述插件对象管理器向上层应用封装的接口包括:
[0029]C++插件库初始化接口init:用于动态加载指定C++插件库,创建该库的模块实例;C++插件库调用接口exec:用于调用C++插件库中的指定功能;
[0030]注册回调方法接口addListener:用于注册接受并处理C++插件库中回调事件的方法;
[0031]移除回调方法接口removeListener:用于停止接受与处理C++插件库中的回调事件;
[0032]检测库是否加载接口isloadedlibrary:用于检测某指定C++插件库是否被成功加载;
[0033]卸载C++插件库接口unloadlibrary:用于卸载指定的C++插件库。
[0034]优选地,所述C++适配层通过接口的方式向上层应用提供与C++插件库的交互调用功能。
[0035]优选地,所述C++适配层通过接口的方式向上层应用提供与C++插件库的交互调用功能包括:
[0036]应用通过C++插件库初始化接口init加载指定路径的C++插件库,并为该C++插件库指定一个唯一的标示符;
[0037]通过调用执行方法exec指定操作字段,C++插件库根据操作字段进行指定操作;[0038]上层应用调用注册回调方法接口addListener,用于接收处理C++插件库的回调事件,回调事件中包括用于标示每个回调的唯一ID,以及传递的参数,回调事件处理方法通过

本文发布于:2024-09-20 20:41:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/465458.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:插件   进行   回调   方法   调用
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议