对象数组的数组(二维数组)JNI [英] Array of Object Array (2d arrays) JNI

查看:229
本文介绍了对象数组的数组(二维数组)JNI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我和我创建自定义对象类型ShareStruct的二维数组挣扎:

I'm struggling with creating a 2d array of my custom object type ShareStruct:

jobjectArray ret ;
jobjectArray ins ;
jobjectArray outs;

jclass myClass = (*env)->FindClass(env,"org/apache/s4/core/ShareStruct");
if (myClass==NULL) fprintf(stderr, "Class ShareStruct not found");

jclass myClassArray = (*env)->FindClass(env, "[Lorg/apache/s4/core/ShareStruct");
if (myClassArray==NULL) fprintf(stderr, "Class ShareStruct[] not found");

ins = (*env)->NewObjectArray(env, in, myClass, NULL);
outs = (*env)->NewObjectArray(env, out, myClass, NULL);
ret = (*env)->NewObjectArray(env, 2, myClassArray, NULL);

第一类装载作品(该ShareStruct是细),但另一种(试图加载ShareStruct []类)不。我试过既没有第l,但没有运气。有任何想法吗?我是新使用JNI。

The first class loading works (the ShareStruct is fine), but the other one (trying to load a ShareStruct[] class) doesn't. I've tried both with and without the L but no luck. Any ideas? I'm new with JNI.

谢谢!

推荐答案

JCLASS myClassArray =(* ENV) - GT;的findClass(ENV[Lorg /阿帕奇/ S4 /核心/ ShareStruct ); 是错误的。
要创建数组做这样的事情。

This jclass myClassArray = (*env)->FindClass(env, "[Lorg/apache/s4/core/ShareStruct"); is wrong. To create the array do something like

 ret = (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);  
(*env)->SetObjectArrayElement( env, ret,index, sharedStructObj);  

下面sharedStructObj将必须由NEWOBJECT创建。结果
JNI程序员指南具有良好的相关的例子

Here sharedStructObj will have to be created by newObject.
Section 3.3.5 of JNI programmer's guide has a good related example

这也是不错的<一个href=\"http://stackoverflow.com/questions/6070679/create-populate-and-return-2d-string-array-from-native-$c$c-jni-ndk\">Create,填充和返回从本地code二维字符串数组(JNI / NDK)

修改

in = (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);
out = (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);
ret= (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);
(*env)->SetObjectArrayElement( env, ret,0, in); 
(*env)->SetObjectArrayElement( env, ret,1, out); 

这篇关于对象数组的数组(二维数组)JNI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆