jni提供了一種java和c/c++交互的方式java
字符串的處理我感受比較有用的方法有三個c++
newStringUTF這個用來新建一個java字符串this
getStringUTFLength獲取java字符串的長度指針
getStringUTFChars這個用來獲取java字符串的指針code
releaseStringUTFChars釋放獲取到的指針字符串
java方法聲明:get
public static native String getString(); public static native void setString(String data);
java方法名和c++方法名的對應,請直接使用Javah生成,不要想本身去寫,規則太麻煩了。string
c++代碼實現class
JNIEXPORT jstring JNICALL Java_JNITest_getString(JNIEnv *env, jclass thisObj){ const char * data ="hello"; //新建java字符串 jstring jdata= env->NewStringUTF(data); return jdata; } JNIEXPORT void JNICALL Java_JNITest_setString(JNIEnv *env, jclass thisObj, jstring data){ //轉換成c++字符串 const char* showData=env->GetStringUTFChars(data,NULL); string msg(showData); //釋放引用 env->ReleaseStringUTFChars(data,showData); cout<<msg<<endl; }