jni提供了一种java和c/c++交互的方式
字符串的处理我感觉比较有用的方法有三个
newStringUTF这个用来新建一个java字符串
getStringUTFLength获取java字符串的长度
getStringUTFChars这个用来获取java字符串的指针
releaseStringUTFChars释放获取到的指针
java方法声明:
public static native String getString();
public static native void setString(String data);
java方法名和c++方法名的对应,请直接使用Javah生成,不要想自己去写,规则太麻烦了。
c++代码实现
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;
}