JNI:
, xyz
public class demo{
public native vecteur[] returnArray();
....
}
cxx swig wrap add func, java vect
JNIEXPORT jobjectArray JNICALL
Java_demo_returnArray
(JNIEnv *env, jobject jobj){
jobjectArray ret;
int i;
jclass objClass;
jmethodID mid;
jobject myobj;
jmethodID setX;
objClass = env->FindClass("vect");
if (!objClass)
{
printf("class not found\n");
exit(0);
}
ret= (jobjectArray)env->NewObjectArray(5,
objClass,
env->NewStringUTF(""));
mid=env->GetMethodID( objClass, "<init>", "()V");
if (!mid)
{
printf("vect() not found\n");
exit(0);
}
for(i=0;i<5;i++) {
myobj=env->NewObject( objClass, mid);
setX=env->GetMethodID( objClass, "setX", "(F)V");
if(!setX)
{
printf("method vect::setX not found\n");
exit(0);
}
env->CallVoidMethod(myobj, setX,(float)i);
env->SetObjectArrayElement(
ret,i,myobj);
}
return(ret);
}
, ,
public class main {
static {
System.loadLibrary("myclass");
}
public static void main(String argv[]) {
demo l = new demo();
vecteur f[] = l.returnArray();
System.out.println("array size : "+f.length);
for (int i = 0;i < f.length;i++)
System.out.println(f[i].getX());
}
}
user195301