Я использую JNI для передачи объекта с C++ на Java. Но я застрял где-то в коде, где «GetMethodID» всегда возвращает NULL и разбивается! Ниже приведен заголовок, который я использовал, и код cpp.Передача объекта в JNI всегда возвращает NULL
Мое намерение состоит в том, чтобы вернуть объект из JNI, где я всегда получаю «emu_response_constructor Null» в поле ниже CPP кода.
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_em_Grabber */
#ifndef _Included_com_em_Grabber
#define _Included_com_em_Grabber
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_em_Grabber
* Method: getProcessedImage
* Signature: (II[B)Lcom/em/Response;
*/
JNIEXPORT jobject JNICALL Java_com_em_Grabber_getProcessedImage
(JNIEnv *, jobject, jint, jint, jbyteArray);
#ifdef __cplusplus
}
#endif
#endif
Внизу файл CPP я. Где объект передается Java.
JNIEXPORT jobject JNICALL Java_com_em_Grabber_getProcessedImage
(JNIEnv *env, jobject obj, jint jRows, jint jCols,jbyteArray jByteArray){
jclass emu_response = env->FindClass("com/em/Response");
if (emu_response == NULL) {
cout << "emu_response Null" << endl;
}
jmethodID emu_response_constructor = env -> GetMethodID(emu_response, "<init>", "(II[B)Lcom/em/Response;");
if (NULL == emu_response_constructor) {
cout << "emu_response_constructor Null" << endl;
}
int number = 90;
jobject jEmuResponse = env->NewObject (emu_response,emu_response_constructor, jByteArray, number);
return jEmuResponse;
}
Ниже мой Java класс:
public class Response {
private int age;
private byte[] result = null;
public Response()
{
}
public Response(byte[] result,int age) {
this.age = age;
this.result = result;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public byte[] getResult() {
return result;
}
public void setResult(byte[] result) {
this.result = result;
}
Вы можете добавить свой класс 'Java'? –
@ ZagorulkinDmitry Я обновил сообщение с Java-классом. – 2vision2
Просьба также показать метод 'native',' Grabber.getProcessedImage() '. Это может быть проблема декларации. –