通过JNI,C调用Java方法,返回值是数组该怎么用?普通的int可以用CallIntMethod.
如果是int数组呢?

解决方案 »

  1.   

    没用过JNI,现在都流行用JNA了…………比JNI好用多了………………
      

  2.   


     我这里有demo 你要就流个email吧!
      

  3.   

    我做过String的数组,你参考下,我感觉道理一样。jobjectArray ret = 0;
    jsize len = 5;
    jstring str;
    string value("hello");ret = (jobjectArray)(env->NewObjectArray(len, env->FindClass("java/lang/String"), 0));
    for(int i = 0; i < len; i++)
    {
        str = env->NewStringUTF(value..c_str());
        env->SetObjectArrayElement(ret, i, str);
    }
    return ret;
      

  4.   

    开始时不知道jna啊.暂时还使用jni吧,有时间再研究研究jna.
      

  5.   

    多了个点,呵呵
    str = env->NewStringUTF(value..c_str());
      

  6.   

     jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {估计是调用object, 不敢确定之后你强制把jobject转为jIntArray或你想要的array
      

  7.   


    不是我要的.我要的是java中有个方法  int[] funcA();
    在c中要怎样调用它.
    我查到如果是int funcA();这样返回值不是数组的方法调用时使用 int value = CallIntMethod(...); 但不知道如果返回值是数组了该怎么调用,因为没有 CallIntArrayMethod(...); 这样的方法.
      

  8.   

    jobject object = CallObjectMethod(...);
    jIntArray result = (jIntArray)object;
      

  9.   

    确实强制转换即可.开始没成功是因为没有加上对NULL的判断.谢各位.