问题 GetStringUTFChars函数参数


我正在使用jni开发Android应用程序。
我使用GetStringUTFChars函数如下

jboolean iscopy;
const char* trainfile = (env)->GetStringUTFChars(jstr, &iscopy);

但我看到了另一个这样的例子

const char *inCStr = (*env)->GetStringUTFChars(env, inJNIStr, NULL);

两者都运作良好。但我找不到任何关于前语法的文档,即使是更简洁。

我在哪里可以找到文档,它们之间有什么区别吗?


6935
2017-09-24 05:49


起源

您是否考虑过咨询JNI规范?一切都在那里。 - user207421


答案:


第一个例子是C ++语法,仅适用于C ++程序。第二个是C程序。

两者不同的原因是在C ++中JNIEnv是一个类,函数是env对象的成员函数,而在C中JNIEnv是一个指向struct的指针。由于您作为参数收到的是指向JNIEnv的指针,因此在C中您必须取消引用它才能访问结构成员,这就是您必须使用的原因 *env 代替 env

这应该包含在有关如何使用JNI的任何文本中,但您也可以通过读取头文件中的代码来找到它。


13
2017-09-24 05:50



感谢您的帮助并节省我的时间...... - Vinoj John Hosan