Linux平台使用JNI Java调用so

Linux平台使用JNI Java调用so

ID:37711789

大小:43.49 KB

页数:4页

时间:2019-05-29

Linux平台使用JNI Java调用so_第1页
Linux平台使用JNI Java调用so_第2页
Linux平台使用JNI Java调用so_第3页
Linux平台使用JNI Java调用so_第4页
资源描述:

《Linux平台使用JNI Java调用so》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.确保gcc编译器已安装2.编写FileUtil.java代码,用native声明需要用c实现的函数。如果源程序是包含在package的话,应该建立同样的文件夹结构,如com/hnrbyl/rmas/util/FileUtil.java【代码】packagecom.hnrbyl.rmas.util;publicclassFileUtil{publicnativestaticStringResultText();publicstaticvoidmain(String[]args){System.loadLibrary("FileUtil");Strings=

2、FileUtil.ResultText();System.out.println(s);}}3.在FileUtil.java文件所在目录下编译.java文件JavacFileUtil.java4.编译第三步生成的.class文件,生成对应的.h头文件,本例中生成com_hnrbyl_rmas_util_FileUtilJavah–classpath~workspaceelectWebRootWEB-INFclasses-dd:-jnicom.hnrbyl.rmas.util.FileUtil其中java中各个命令的意思-classpath<路径>用

3、于转入类的路径-d<目录>输出目录-jni生成JNI样式的头文件(默认)这个Java文件是在路径“E:workspaceelectsrc”下,包“packagecom.hnrbyl.rmas.util;”中的得到的FileUtil对应的class文件,在路径“E:workspaceelectWebRootWEB-INFclassescomhnrbylrmasutil”下。注意到以上我们命令中指定的路径注意到我们的命令符的执行位置是源代码目录”E:workspaceelectsrc”-classpath 后面的路径是指包”com

4、.hnrbyl.rmas.util”所在的根路径(如下图所示)1.第四部中生成的头文件内容【代码】/*DONOTEDITTHISFILE-itismachinegenerated*/#include"jni.h"/*HeaderforclassFileUtil*/#ifndef_Included_com_hnrbyl_rmas_util_FileUtil#define_Included_com_hnrbyl_rmas_util_FileUtil#ifdef__cplusplusextern"C"{#endif/**Class:FileUtil*Method:

5、ResultText*Signature:(I)I*/JNIEXPORTjstringJNICALLJava_com_hnrbyl_rmas_util_FileUtil_ResultText(JNIEnv*,jobject);#ifdef__cplusplus}#endif#endif2.编写FileUtil.c文件,实现引用第4步中生成的.h头文件,并声明其中的方法。【代码】#include"jni.h"#include"stdlib.h"#include"FileUtil.h"//JNIEXPORTjstringJNICALLJava_com_hnrby

6、l_rmas_util_FileUtil_ResultText(JNIEnv*env,jobjectobj){char*str="HelloWorld!"; jstringrtn;rtn=env->NewStringUTF(str);returnrtn;}1.讲第6步中编写的FileUtil.c文件,编译成.so文件gcc-I/wenjin/jdk1.7.0_25/include/-I/wenjin/jdk1.7.0_25/include/linux/-fPIC-shared-olibFileUtil.soFileUtil.c注:/wenjin/jdk1.7

7、.0_25/include是jni.h头文件所在的路径/wenjin/jdk1.7.0_25/include/linux是jni_md.h所在的路径2.将第7步中生成的libFileUtil.so文件拷贝到java的加载库LD_LIBRARY_PATH指向的路径中。3.在运行FileUtil.class在com.hnrbyl.rmas.util跟目录src下运行Javacom.hnrbyl.rmas.util.FileUtil一切正常后,可以看到运行結果是输出了HelloWorld!,其值是由C语言代码实现并返回的。gcc-I/usr/java/jdk1.7

8、.0_25/include/-I/usr/java/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。