2018-06-06 jni (c++)入门

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中的静态的变量

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容