1:c++中返回一个字符串
extern "C"
JNIEXPORT jstring JNICALL
Java_com_winmu_ev_JNI_JniLib_getString(JNIEnv *env, jclass type) {
std::string hello = "fromC++";
return env->NewStringUTF(hello.c_str());
}
2:c++中返回一个数组
extern "C"
JNIEXPORT jintArray JNICALL
Java_com_winmu_ev_JNI_JniLib_getArray(JNIEnv *env, jclass type) {
jintArray array;
jint buf[]={0,0,0,0,0};
array = env->NewIntArray(3);
env->SetIntArrayRegion(array,0,3,buf);
return array;
}
3:c++中返回数组的和,传入的参数是数组 (array 是传入的数组)
extern "C"
JNIEXPORT jint JNICALL
Java_com_winmu_ev_JNI_JniLib_getSum(JNIEnv *env, jclass type, jintArray arr_) {
jint *arr = env->GetIntArrayElements(arr_, NULL);
jint sum = 0;
jint len = env->GetArrayLength(arr_);
for(int i = 0; i
sum = sum + *(arr+i);
}
env->ReleaseIntArrayElements(arr_, arr, 0);
return sum;
}
4: c++中调用java中类的方法, 没有参数 只有返回值String
// 定义一个静态方法 , 提供给JNI调用
public voidmethodCalledByJni(String msgFromJni){}
5: c++中调用java中类的静态方法, 没有参数 只有返回值String
6: c++中调用java中类的方法 二个参数 第一个参数是int 第二个参数是String 返回值是String
7: c++中调用java中的全局变量
8: c++中调用java中的静态的变量
网友评论