jni调用java中的函数大致分为以下三个步骤
- 通过(*env)->FindClass找到类的对象
- 通过(*env)->GetMethodID来获取方法Id
- 通过调用(*env)-<CallVoidMethod来调用对应的函数/方法
详细实现步骤
- 首先编写java层静态和非静态方法
package clz;
public class ClassMethod {
public ClassMethod(){ //构造方法
System.out.println("ClassMethod() constructor");
}
private static void callStaticMethod(String str, int i) { //静态方法
System.out.format("ClassMethod::callSatticMethod called!-->str=%s,"+
" i=%d\n", str,i);
}
private void callInstanceMethod(String str, int i) { //非静态方法
System.out.format("ClassMethod::callInstanceMethod called!-->str=%s,"+
"i=%d\n",str,i);
}
}
- 编写java层native方法声明,并利用方法注册生成c语言的.h文件,如何注册请参考
public class JniTest {
native void ca