我正在使用jni开发Android应用程序。
我使用GetStringUTFChars函数,如下所示
jboolean iscopy;
const char* trainfile = (env)->GetStringUTFChars(jstr, &iscopy);但是我看到了另一个这样的例子
const char *inCStr = (*env)->GetStringUTFChars(env, inJNIStr, NULL);两者都工作得很好。但是我找不到任何关于以前的语法的文档,即使它更简洁。
我在哪里可以找到文档,它们之间有什么区别吗?
发布于 2013-09-24 13:50:59
第一个例子是C++语法,它只适用于C++程序。第二个是针对C程序的。
两者不同的原因是,在C++中,JNIEnv是一个类,而函数是环境对象的成员函数,而在C中,JNIEnv是指向结构的指针。由于您接收的参数是指向JNIEnv的指针,在C中,您必须取消对它的引用才能访问结构成员,这就是为什么您必须使用*env代替env。
关于如何使用JNI的任何文本中都应该包含这一点,但是您也可以通过阅读头文件中的代码来找到它。
https://stackoverflow.com/questions/18973866
复制相似问题