我必须将一组结构值从 c++ (jni) 返回到 java。我的c ++结构如下
MyCStructure
{
byte *Data;
int dataLength;
int width;
int height;
}mycstr;
我有我的java结构
public class MyJavaStructure
{
public byte[] Data;
public int dataLength;
public int width;
public int height;
}
我的JavaMainClass.java是
MyJavaStructure[] mystr = MyJavaStructure[4];
public native int Process();
public LSImage getValues()
{
return this.mystr ;
}
public void setValues(MyJavaStructure bDetails)
{
this.mystr = bDetails;
}
我尝试使用 setValues 的 GetMethodId 直接从 JNI 传递对象数组(MyJavaStructure)。
我的 JNI 代码是
JNIEXPORT jint JNICALL Java_TestJNI_Process(JNIEnv *jEnv, jobject jObj)
{
MyCStructure* mycstr = new MyCStructure[4];
iRet = Process(&mycstr);
jclass jClass = jEnv->GetObjectClass(jObj);
jmethodID constructor;
jmethodID jObjectID = jEnv->GetMethodID (jLegendClass, "setValues", "(LMyCStructure;)V");
if (jObjectID == NULL)
{
throwJavaException(jEnv, "Unable to find the method setValues");
return NULL;
}
jEnv->CallObjectMethod(jObj, jObjectID, (jobject *) mycstr);
printf ("After setting the output data value\n");
jEnv->DeleteLocalRef(jClass);
return iRet;
}
mycstr 中返回的值包含 4 个结构 (MyCStructure) 值数组,我尝试在 MyJavaStructure 类对象中分配,但它返回 null。
我做得对还是我必须改变什么?