Including the method, a Java application and non JNI standard binary file call each other: judging whether the file is a binary JNI code binary file: JNI specification is a binary file, written file function calls the JNI specification; if non JNI standard binary files, then JNI of the binary file, further written the JNI standard function call file. This design realizes the application of Java to call non JNI standard binary files containing class member functions, solves the problem of calling each other between functions under different platforms, and realizes the seamless connection of function direct call. The design invention also applies to the Java layer called non - JNI standard binary files that do not contain class member functions and the binary files of the JNI specification. In addition, the same applies to the Android Studio development platform for the general scheme under a variety of platforms.
【技术实现步骤摘要】
一种Java应用与非JNI规范二进制文件相互调用的方法
本专利技术涉及一种Java应用与非JNI规范二进制文件相互调用的方法,属于计算机技术应用的
技术介绍
跨平台开发技术越来越多,如何实现不同平台下文件的相互调用亟待解决。Java应用开发是目前三大开发技术之一。二进制文件是跨平台开发常用的交接方式,但是二进制文件分为JNI规范二进制文件和非JNI规范二进制文件,其中,对于JNI规范二进制文件,Java层可以通过JNI层转换实现对该文件的调用,而对于非JNI规范二进制文件则无法调用。此外,所述二进制文件还可按照以下分类:即包含类成员函数和不包含类成员函数两种,对于包含类成员函数的二进制文件,目前采用dlopen()和dlsym()相结合的方式进行调用,但是该方法复杂且不易实现,因此,现有
需要寻找一种调用包含类成员函数的非JNI规范的二进制文件显得尤为重要。C++函数可以直接调用包含类成员函数的非JNI文件,即将C++函数与非JNI规范的二进制文件调用的CPP文件JNI规范化,但是在java环境下利用C++是不能调用非JNI规范的文件的。
技术实现思路
针对现有技术的不足,本专利技术提供一种Java应用与非JNI规范二进制文件相互调用的方法。本专利技术设计基于Eclipse开发平台,分析了二进制文件的类别,以及生成二进制文件的函数类型,针对包含类成员函数的非JNI规范的二进制文件,设计实现了JNI规范化以及Java层与规范化后相互调用方法,从而实现Java层调用非JNI规范的二进制文件。本专利技术的技术方案如下:一种Java应用与非JNI规范二 ...
【技术保护点】
一种Java应用与非JNI规范二进制文件相互调用的方法,其特征在于,该方法包括:判断二进制文件是否是JNI规范二进制文件:如是JNI规范二进制文件,则编写JNI规范的函数调用文件;如是非JNI规范二进制文件,则对所述二进制文件进行JNI规范化,进一步编写对JNI规范化后的函数调用文件。
【技术特征摘要】
1.一种Java应用与非JNI规范二进制文件相互调用的方法,其特征在于,该方法包括:判断二进制文件是否是JNI规范二进制文件:如是JNI规范二进制文件,则编写JNI规范的函数调用文件;如是非JNI规范二进制文件,则对所述二进制文件进行JNI规范化,进一步编写对JNI规范化后的函数调用文件。2.根据权利要求1所述的一种Java应用与非JNI规范二进制文件相互调用的方法,其特征在于,所述JNI规范化的步骤如下:(1)创建Java应用工程:声明对二进制文件的调用方法,并对所述Java应用工程添加本地方法的支持,工程生成jni包;(2)终端下编译出.h头文件,根据.h头文件编写JNI规范化的CPP文件,所述CPP文件中的函数命名符合JNI规范,实现对二进制文件的调用,以及与Java层的交互;(3)编写Android.mk文件:封装生成的动态链接库供Java层调用,将非JNI规范的二进制文件规范化。3.根据权利要求2所述的一种Java应用与非JNI规范二进制文件相互调用的方法,其特征在于,在步骤(2)中,所述二进制文件是通过回调的方式实现对CPP文件中函数调用的。4.根据权利要求2所述的一种Java应用与非JNI规范二进制文件相互调用的方法,其特征在于,在步骤(3)中,所述Android.mk文件将上CPP文件、二进制文件的头文件及二进制文件编译在一起,生成JNI规范化的二进制文件。5.根据权利要求2所述的一种Java应用与非JNI规范二进制文件相互调用的方法,其特征在于,在步骤(1)中,在Java应用工程中实现调用二进制文件的...
【专利技术属性】
技术研发人员:张芳庆,马双涛,陈亮甫,孙超,王朝晖,
申请(专利权)人:山东超越数控电子有限公司,
类型:发明
国别省市:山东,37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。