2、从一个简单例子开始

Java通过JNI调用C++/C,通过个简单例子说明,计算两个数之和。

Java文件:Add.java

public class Add{

   static {

       system.loadLibrary("add_jni");

   }

   public static synchronzied native CalcAdd_native(int a,int b);

    public int CalcAdd(int a,int b)

    {

        return CalcAdd_native (a,b);

    }

}

对编译生成的.class 文件可以用javah自动生成相应的jni文件声明,进入到生成的CalcNative.class 文件下,javah.exe  -classpath path -jni CalcNative

Calc_add.cpp文件

JNIEXPORT jint JNICALL Java_Calc_add_1native (JNIEnv *env,jint a,jint b)

{      

return (a + b);

}

生成的JNI接口名称是Java_Calc_add_1native,其中Java是固定的关键字下面依次是包名,接口名,包名和包名,包名和接口名之间有”_”隔开,因为接口名称里本身就带了”_”,所有用”_1”,表示是接口内的符号,有点转义字符的意思。