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; }