前面提到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);
}
本文出自 “肉肉之家” 博客,请务必保留此出处http://4895268.blog.51cto.com/4885268/1368156