如何将数组从jni传递到java方法
我正在尝试将如何将数组从jni传递到java方法,java,android,arrays,callback,java-native-interface,Java,Android,Arrays,Callback,Java Native Interface,我正在尝试将int数组从JNI传递到Java。当我传递单个或多个int值时,它起作用但传递数组不起作用。每次应用程序崩溃并返回以下错误 错误 JNI JAVA 线路 jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef); 这绝对是错误的。它尝试使用onDataReady()的方法ID作为构造函数 你可能需要 jmethodID javaDefaultConstructor = env->GetMeth
int数组
从JNI传递到Java
。当我传递单个或多个int
值时,它起作用
但传递数组
不起作用。每次应用程序崩溃并返回以下错误
错误
JNI
JAVA
线路
jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef);
这绝对是错误的。它尝试使用onDataReady()的方法ID作为构造函数
你可能需要
jmethodID javaDefaultConstructor = env->GetMethodID(javaClassRef, "<init>", "()V");
jobject javaObjectRef = env->NewObject(javaClassRef, javaDefaultConstructor);
jmethodidjavadefaultconstructor=env->GetMethodID(javaClassRef,“,”()V”);
jobject javaObjectRef=env->NewObject(javaClassRef,javaDefaultConstructor);
请注意,jmethodID不是一个引用:您可以在任何线程和您喜欢的任何实例上查找一次ID并使用它。它只是一个数字,至少在应用程序的生命周期内是常量。很抱歉,我不明白您想说什么。onDataReady()绝对不是构造函数。GetMethodID中的方法名在哪里?你能解释一下这行吗?“
表示构造函数。您可以使用javap找到适合您的类的确切的附魔。但是onDataReady()不是构造函数。我想调用一个特定的方法,而不是构造函数。我也可以毫无问题地调用一个不以数组作为参数的方法。也许区别在于你尝试的另一个方法是静态的?
public void onDataReady(int[] array,int len){
}
jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef);
jmethodID javaDefaultConstructor = env->GetMethodID(javaClassRef, "<init>", "()V");
jobject javaObjectRef = env->NewObject(javaClassRef, javaDefaultConstructor);