[发明专利]基于JNI的C++中JAVA函数调用方法有效

专利信息
申请号: 201711336832.0 申请日: 2017-12-14
公开(公告)号: CN107832056B 公开(公告)日: 2020-12-18
发明(设计)人: 李波 申请(专利权)人: 苏州蜗牛数字科技股份有限公司
主分类号: G06F8/40 分类号: G06F8/40
代理公司: 北京德崇智捷知识产权代理有限公司 11467 代理人: 王金双
地址: 215000 江苏省*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 jni c++ java 函数 调用 方法
【说明书】:

一种C++与JAVA函数相互调用方法,包括以下步骤:使用C++可变参数模板和模板特化,实现编译期JNI数据类型签名的字符串值字面对象,并预置JNI支持的数据类型签名,建立JNI接口;调用JAVA函数后,使用C++可变参数模板和模板特化实现C++、JNI直接的数据类型转换和生成函数签名;进行函数执行结果从JNI数据类型转换为C++数据类型,最终返回结果。采用本发明的方法,实现C++、JAVA无缝调用,并隐藏了JNI的调用过程,开发人员不必去学习JNI开发也不必去编写沉长的JNI函数调用签名也能完成C++与JAVA的交互,大大减少工作量并提高程序的可维护性和稳定性,节省人力成本。

技术领域

本发明涉及一种跨语言函数调用方法,尤其涉及基于JNI(Java NativeInterface)的C++中JAVA函数调用方法。

背景技术

在进行跨平台开发中,为了能够实现代码的高度复用,往往都会使用C++来开发核心功能,然后使用各个平台原生语言来实现核心功能与平台的交互,比如android游戏开发,核心游戏逻辑使用C++开发,平台部分使用Java开发。因为游戏是在平台之上运行的,所以游戏逻辑和平台肯定会有所交互,目前C++和JAVA主流的交互方法是使用JNI来调用JAVA函数,但是要真正的实现调用,开发人员必须清楚C++数据类型、JNI数据类型、JAVA数据类型并且还需要了解这些类型是如何对应和转换的,并且还需要清楚的知道如何编写JNI函数签名。而且编写具体交互逻辑的时候的步骤为:

步骤①.通过C++、JNI、JAVA数据类型的映射关系手动编写函数签名。

步骤②.手动编写C++、JNI、JAVA每一种数据类型的转换。

步骤③.查找函数并调用。

步骤④.手动转换函数返回结果。

以上步骤为每调用一个函数都要写一遍。随着函数数目增加,工作量和代码维护量将大幅增加,同时出错的概率也大大增加。

发明内容

为了解决现有技术存在的问题,本发明提供一种基于JNI的C++中JAVA函数调用方法。

本发明的目的通过以下技术方案来实现:

基于JNI的C++与JAVA调用方法,其包括以下步骤:

使用C++可变参数模板和模板特化,实现编译期JNI数据类型签名的字符串值字面对象,并预置JNI支持的数据类型签名,建立JNI接口;

调用JAVA函数后,使用C++可变参数模板和模板特化实现C++、JNI直接的数据类型转换和生成函数签名;

进行函数执行结果从JNI数据类型转换为C++数据类型,最终返回结果。

上述的基于JNI的C++中JAVA函数调用方法,其中:所述的实现编译期字符串字面对象的实现原理为利用C++可变参数模板的特性以及模板特化特性实现模板递归,每一层递归保存一个静态字符,最终整套递归就是一个完整的字符串字面值对象。JNI数据类型是有限的,然后通过编译期字符串字面对象预置JNI数据类型签名。以供通过C++对象映射JNI对象。本发明提供一套JNI接口,用于给开发人员调用java函数,通过C++模板实现模板递归和特化,实现JNI数据类型签名字符串字面值对象,并预置JNI支持的数据类型签名,开发人员调用JAVA方法后,使用C++模板特化和可变参数特性推导出参数对应的JNI数据类型签名字符串字面值对象,使用模板递归连接数据类型签名生成最终的函数签名。该操作是在程序编译期完成的。如果使用的数据类型不被支持,编译将不会通过。通过自动生成的函数签名调用JNI接口查找函数,找到函数后,使用可变参数模板和模板特化实现C++到JNI的数据类型转换,使用转换过后的参数进行函数调用,并自动进行函数执行结果从JNI数据类型转换为C++数据类型,最终返回结果。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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