linux下jni的开发步骤
2013-12-26 16:57
543 查看
下面展示一个linux下java通过jni调用动态库的方法。留以备用
jni的内容较多,包括双向调用,传递基本类型参数,传递二进制参数,传递引用类型等。具体内容请参考jni专门的知识,我这里只做helloworld,演示linux下的开发步骤。
1.创建一个HelloJni.java的文件
2.编译这个java文件:javac HelloJni.java
当前目录下会生成一个HelloJni.class的文件
3.使用javah 工具生成c语言的头文件: javah HelloJni
此时,会发现当前目录多出了一个HelloJni.h的头文件
查看这个文件的内容如下:
4.新建一个hellojni.c的文件,实现上面的方法: vi hellojni.c
5.编译这个c文件: gcc -c hellojni.c
当前目录下会生成一个hellojni.o的文件
6.生成一个so动态库: gcc -shared -o libhellojni.so hellojni.o
当前目录下会生成一个libhellojni.so的动态共享库
此时目录中的文件列表如下:
现在,就可以运行一下这个java程序看看效果了
到此,实验完成。
jni的内容较多,包括双向调用,传递基本类型参数,传递二进制参数,传递引用类型等。具体内容请参考jni专门的知识,我这里只做helloworld,演示linux下的开发步骤。
1.创建一个HelloJni.java的文件
public class HelloJni{ public native void sayHello(); static{ System.loadLibrary("hellojni"); } public static void main(String[] args){ new HelloJni().sayHello(); } }
2.编译这个java文件:javac HelloJni.java
当前目录下会生成一个HelloJni.class的文件
3.使用javah 工具生成c语言的头文件: javah HelloJni
此时,会发现当前目录多出了一个HelloJni.h的头文件
查看这个文件的内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloJni */ #ifndef _Included_HelloJni #define _Included_HelloJni #ifdef __cplusplus extern "C" { #endif /* * Class: HelloJni * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloJni_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif可以看到,这个头文件通过宏来实现在c和c++下的共用。
4.新建一个hellojni.c的文件,实现上面的方法: vi hellojni.c
#include <stdio.h> #include <jni.h> #include "HelloJni.h" JNIEXPORT void JNICALL Java_HelloJni_sayHello(JNIEnv *env, jobject obj){ printf("Hello Dynamic Link Library has been calling!\n"); }
5.编译这个c文件: gcc -c hellojni.c
当前目录下会生成一个hellojni.o的文件
6.生成一个so动态库: gcc -shared -o libhellojni.so hellojni.o
当前目录下会生成一个libhellojni.so的动态共享库
此时目录中的文件列表如下:
HelloJni.java HelloJni.class HelloJni.h hellojni.c hellojni.o libhellojni.so
现在,就可以运行一下这个java程序看看效果了
java -Djava.library.path=. HelloJni输出结果为:
Hello Dynamic Link Library has been calling!
到此,实验完成。
相关文章推荐
- [转]linux下JNI开发步骤详解
- linux下JNI开发步骤详解
- Linux驱动开发学习的一些必要步骤
- Linux平台下的JNI开发[88250原创]
- android之JNI开发步骤总结
- linux下开发android_jni过程及错误经历
- [转帖]Linux驱动开发学习的一些必要步骤
- 将本地开发的 Maven 2 项目部署到 Linux Tomcat 下的步骤
- Linux驱动开发学习的一些必要步骤
- JNI开发第三步:20130801_NDK_JNI的.so文件开发-安卓访问LINUX驱动
- JNI及Android JNI 开发基本知识和具体操作步骤
- 【Linux开发】【Qt开发】ARM QT移植详细步骤教程
- Linux平台下的JNI开发[88250原创]
- 将本地开发的 Maven 2 项目部署到 Linux Tomcat 下的步骤
- Android平台下的JNI开发linux平台下
- 【ARM-Linux开发】【Qt开发】Qt Creator自定义编译运行步骤
- [转]Linux驱动开发学习的一些必要步骤
- Android Studio 开发JNI工程步骤
- linux eclipse android NDK+JNI 本地共享链接库开发笔记。。------记录一下,不然过段时间就忘了
- Linux平台下的JNI开发[88250原创]