GetStringUTFChars函数参数

plh*_*lhn 11 java-native-interface

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

jboolean iscopy;
const char* trainfile = (env)->GetStringUTFChars(jstr, &iscopy);
Run Code Online (Sandbox Code Playgroud)

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

const char *inCStr = (*env)->GetStringUTFChars(env, inJNIStr, NULL);
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*oni 15

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

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

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