linux下使用JNI的Sample

http://blog.csdn.net/pennyliang/article/details/6794303

为了给THUIRDB做个java调用接口,学习了下JNI。从网上找了个例子【http://w393185765.blog.163.com/blog/static/5672230620112254213718/】,并做了些修改,详细如下:

1)

编写如下代码,并存为JniDemo.java

public class JniDemo{static { System.loadLibrary("Demo");}public static native void print();public static native int add(int a,int b);public static void main(String[] args){ System.out.println(add(4,5));}}

2)执行:javac JniDemo.java

该命令得到JniDemo.class

3)执行:javah JniDemo

该命令得到JniDemo.h

4)编写下面代码,并存为JniDemo.c

#include<stdio.h>#include <jni.h>#include "JniDemo.h"JNIEXPORT void JNICALL Java_JniDemo_print(JNIEnv *env, jobject obj){ printf("hello jni kkkkkkkkkkkkkkkkllllllllllllllllllll\n");}JNIEXPORT jint JNICALL Java_JniDemo_add(JNIEnv *env, jobject obj, jint a, jint b){ return a+b;}

5)编写下面文件,并存为Makefile (path根据不同机器上的安装情况需要调整)

LD:=ldCPP:=gccCPPFLAGS:= -c -fPIC# the libfile name is libDemo.soLIB:=libDemo.so#the jni.h pathpathlix:=-I/usr/java/jdk1.6.0_16/include/pathinclude:=-I/usr/java/jdk1.6.0_16/include/linuxobjects:=JniDemo.oedit:$(objects) $(LD) -shared -o $(LIB) $(objects)JniDemo.o:JniDemo.c JniDemo.h $(CPP) $(pathlix) $(pathinclude) $(CPPFLAGS) JniDemo.cclean: rm -f $(objects)

6)执行:make

得到libDemo.so

7)运行如下命令,完成实验

java -Djava.library.path=./ JniDemo

生命不是一场赛跑,而是一次旅行。比赛在乎终点,而旅行在乎沿途风景。

linux下使用JNI的Sample

相关文章:

你感兴趣的文章:

标签云: