//局部引用 JNIEXPORT void JNICALL Java_com_aruba_jniapplication_JniDemo5_localRef (JNIEnv* env, jobject jobj) { //创建一个局部引用 jstring jstr = env->NewStringUTF("哈哈"); //使用局部引用 printf("%s",jstr); //释放局部引用 env->DeleteLocalRef(jstr); }
创建全局引用
//创建全局引用 jstring global_str; JNIEXPORT void JNICALL Java_com_aruba_jniapplication_JniDemo5_createGlobalRef (JNIEnv* env, jobject jobj) { jobject jstr = env->NewStringUTF("hello"); global_str = (jstring)env->NewGlobalRef(jstr); }
获取全局引用
//获取全局引用 JNIEXPORT jstring JNICALL Java_com_aruba_jniapplication_JniDemo5_getGlobalRef (JNIEnv* env, jobject jobj) { return global_str; }
删除全局引用
//删除全局引用 JNIEXPORT void JNICALL Java_com_aruba_jniapplication_JniDemo5_delGlobalRef (JNIEnv* env, jobject jobj) { env->DeleteGlobalRef(global_str); }
package com.aruba.jniapplication; * JNI 引用 public class JniDemo5 { static { System.load("C:\\Users\\tyqhc\\source\\repos\\JniApplication\\x64\\Debug\\JniApplication.dll"); public native void localRef(); public native void createGlobalRef(); public native String getGlobalRef(); public native void delGlobalRef(); public static void main(String[] args) { JniDemo5 jniDemo5 = new JniDemo5(); jniDemo5.createGlobalRef(); System.out.println(jniDemo5.getGlobalRef()); jniDemo5.delGlobalRef(); }
image.png
//创建弱全局引用