要开始关注信创工程了,练习下功底!
mytest.h
int myadd(int a,int b);
mytest.c
include "mytest.h"
int myadd(int a,int b) {
return a+b;
}
gcc -fpic -c mytest.c
gcc -shared -o libtest.so mytest.o
// apptest.c 调用libtest.so
#include "m'ymyt.h"
int result();
int result(){
return myadd(21,300);
}
gcc -fpic -c apptest.c
//create libapptest.so
gcc -shared -o libapptest.so apptest.o -L ./ -ltest
// javaCallSo.java
import com.sun.jna.Library;
import com.sun.jna.Native;
public class javaCallSo{
public interface testSOInterface extends Library{
public int result();
testSOInterface INSTANCE = (testSOInterface)Native.loadLibrary("apptest", testSOInterface.class);
}
public static void main(String[] args){
System.out.println(testSOInterface.INSTANCE.result());
}
}
// jna-4.4.0.jar 可网上下载
export CLASSPATH=$CLASSPATH:/home/qdbdjx/jna-4.4.0.jar
javac javaCallSo.java
设定so的查找线路,不然无法嵌套调用
export LD_LIBRARY_PATH="/home/qdbdjx:/lib"
// 运行
java javaCallSo
结果 321