1.需要被c/c++调用的对象
package com.example.test;
public class Other {
public native void test();
private String str;
public String getStr() {
test();
return str;
}
public void test1(){
str = "test";
}
public void test2(){
str += "test2";
}
}
2.c/c++代码
#include <jni.h>
#include <com_example_test_Other.h>
JNIEXPORT void JNICALL Java_com_example_test_Other_test(JNIEnv *env, jobject obj){
jclass clazz;
// clazz = (*env)->GetObjectClass(env,obj); // com.example.test.Other
clazz = (*env)->FindClass(env,"com/example/test/Other"); // 获取要调用的对象
jmethodID test1ID = (*env)->GetMethodID(env,clazz,"test1","()V"); // 获取方法ID
jmethodID test2ID = (*env)->GetMethodID(env,clazz,"test2","()V");
(*env)->CallVoidMethod(env,obj,test1ID); // 调用方法
(*env)->CallVoidMethod(env,obj,test2ID);
return;
}