首页 > 代码库 > java通过JNI接口调用C语言-初级
java通过JNI接口调用C语言-初级
JNI(java native interface):即java本地调用C的接口。
先看整体运行:
下面是过程:
#vim test.java
1 public class test{ 2 3 public native static int add(int a, int b); //指明本地函数 4 static{ 5 System.loadLibrary("add"); //指定动态库 6 }; 7 8 public static void main(String args[]){ 9 10 int ret = 0;11 12 ret = add(6, 8);13 14 System.out.println("hello world! " + ret + "\n");15 }16 };
既然指定了动态库,那么这个库从何而来?对新手来说使用javah 这个命令就可以了,根据这个命令生成的头文件生成库。
#javac test.java
#javah -jni test
此时生成了test.h文件,修改如下:
#vim test.h
1 #include <jni.h>2 jint Java_test_add (JNIEnv *env, jclass obj, jint a, jint b)3 {4 return a + b;5 }
把这个头文件变成.c文件,不解释;注意:头文件没有的需要指定路径,我这里之前已经配置好了的。
#mv test.h test.c
下面开始生成动态库:
#gcc -c -fPIC test.c -o test.o //-fPIC指定与位置无关
#gcc -shared test.o -o libadd.so //链接生成动态库
最后执行java:
#LD_LIBRARY_PATH=. java test //指定库的路径为本目录
java通过JNI接口调用C语言-初级
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。