GetStringUTFChars函数参数

时间:2013-09-24 05:49:20

标签: java-native-interface

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:14)

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

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

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