java 调用gcc so
mkdir -pv com/mpjni
cd com/mpjni
vi mpjni.java
package com.mpjni;
public class mpjni
{
static
{
System.loadLibrary("testmp");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
mpjni app=new mpjni();
mpjni.set(10);
System.out.println(mpjni.get());
}
}
编译
javac mpjni.java
cd ../..
javah com.mpjni.mpjni
可以产生 com_mpjni_mpjni.h
vi mpjni.c
#include "com_mpjni_mpjni.h"
int i=0;
JNIEXPORT jint JNICALL Java_com_mpjni_mpjni_get(JNIEnv *env,jclass jc)
{
return i;
}
JNIEXPORT void JNICALL Java_com_mpjni_mpjni_set(JNIEnv *env,jclass jc,jint j)
{
i=j;
}
编译mpjni.c
gcc -fPIC -D_REENTRANT -I/java/include -I/java/include/linux -c mpjni.c
注:/java/include 是jni.h头文件所在的路径
/java/include/linux 是jni_md.h所在的路径
gcc -shared mpjni.o -o libtestmp.so
testmp 是你上面System.loadLibrary("testmp");的名字
格式为libxxxxxx.so
export LD_LIBRARY_PATH=`pwd`
echo $LD_LIBRARY_PATH
java com.mpjni.mpjni
运行结果为 10
以下方法可以直接利用绝对路径来load这个so库文件
static
{
System.load("/root/jni/libtestmp.so");
}
如果需要String 字符串转换
请到
http://download.csdn.net/detail/qvb3d/5014815
下载
我又更改添加字符串
C jstring -> Java String
Java String -> C jstring
以下转换
int
float
double
string
char *
C->Java
Java->C
可以到
http://download.csdn.net/detail/qvb3d/5015477
下载