我很难找到这个问题的答案。但是,"jboject thiz“在JNI函数调用中用来做什么呢?例如:
jobjectArray Java_com_gnychis_awmon_Test( JNIEnv* env, jobject thiz ) {
我经常使用env
来分配对象,但我从未使用过它,也不确定它是用来做什么的。只是出于知识的目的。
发布于 2013-01-29 17:13:16
下面是一个JNI包装器函数,它有两个参数,并返回一个基本的对象数组:
jobjectArray Java_com_gnychis_awmon_Test( JNIEnv* env, jobject thiz );
从你给出的函数名来看,我不认为它是完整的,也就是说,你没有遵守强制性的函数名约定,即:
第一个参数是指向存储所有JNI函数指针的结构的指针,即#include <jni.h>
之后的所有the predefined functions you have available。
第二个参数是对Java对象的引用,在该对象中声明了这个本机方法。 You can use it to call the other methods of the Java object来自当前的JNI函数,即从用C或C++编写的JNI代码调用Java实例方法。
例如,如果在MainActivity.java文件中有以下Java类:
public class MainActivity extends Activity
{
static
{
try
{
System.loadLibrary("mynativelib");
}
catch (UnsatisfiedLinkError ule)
{
Log.e(TAG, "WARNING: Could not load native library: " + ule.getMessage());
}
}
public static native Object[] Test();
}
然后,函数的JNI jobject的参数将是对MainActivity类型的对象的引用。
https://stackoverflow.com/questions/14429213
复制相似问题