第一步,建立test.c
#include<stdio.h>
int add(int a,int b);
int add(int a,int b)
{
int c = a + b ;
return c ;
}
第二步,在linux下编译.o和生成动态链接库.so
gcc -fpic -c test.c (fpic的意思是Position Independent Code)
gcc -shared -o libtest.so test.o
注意为什么叫libtest.so,因为jna在找so文件的时候,要匹配前缀为lib的so文件。
第三步:
拷贝libtest.so到/usr/lib下,以备java代码来访问
第四步:建立.java为了访问.so
--------------------
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface Interface_SO extends Library {
Interface_SO INSTANCE = (Interface_SO) Native.loadLibrary("test",Interface_SO.class);
int add(int a,int b);
}
---------------------
public class TestSo {
public int add(int a,int b){
return Interface_SO.INSTANCE.add(a,b);
}
public static void main(String[] args) {
TestSo ts = new TestSo();
int c = ts.add(100,200);
System.out.println("100+200="+c);
}
}
第四步:编译TestSo.java 生成Interface_SO.class和TestSo.class
第五步:
拷贝jna.jar到linux当前文件夹,并且用命令设置环境变量
export CLASSPATH=$CLASSPATH:./jna.jar
第六步:
运行
$ java TestSo
运行结果:100+200=300