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的任何文本中,但您也可以通过读取头文件中的代码来找到它.