已有.so库,用swig再编译JNI库

469 阅读1分钟

假设我们已经拥有了一个libma2x.so的动态链接库,下面来介绍下如何用swig来编译jni库:



编写ma2x.i


如果已经存在了一个ma2x.h的header文件, 更多的.i 文件的写可以参照www.swig.org/tutorial.ht…


%module Ma2x
%{
#include "ma2x.h"
%}

%include "ma2x.h"



swig


swig -java -package cm.service -outdir cm/service ma2x.i



Gcc


gcc -c ma2x_wrap.c -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux

gcc -shared ma2x_wrap.o libma2x.so -o libma2xwrap.so



java 代码


static {
        System.loadLibrary("ma2400wrap");
    }



Javac


javac -d . cm/service/*.java



Java Run


java -cp . -Djava.library.path=./ cm.service.Ma2xService



其它问题



解包


ar x libsome.a