JNI知識(四)Java調用C++/C函數之Java參數類型是String

前面提到JNI主要是可以完成Java調用C++/C函數,C++/C也可以調用Java方法。先看Java調用C++/C函數。

下面先看java接口參數是String類型(入參)

example:

Java interface  

      public void setName(String name);

 JNI file:

JNIEXPORT void JNICALL Java_setName_ 1native (JNIEnv *env, jclass thiz, jstring name)

 {      

                const char* str;

                jboolean isCopye = false;

            /* 把傳進來的jstring類型轉爲utf-8類型,JNI中只識別編碼方式是UTF-8的 */

              str = env->GetStringUTFChars(name, &isCopye);

       …….

/* 注意使用完了最好JVM釋放轉換成UTF-8的  string的對象的空間,如果不顯示的調用的話,JVM中會一直保存 該對象,不會被垃圾回收器回收,可能就會導致內存溢出。 */

env->ReleaseStringUTFChars(name, str);


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章