Android jni 二維數組 傳遞

來源:互聯網
上載者:User

標籤:void   local   port   strong   jnienv   ase   oid   har   bool   

學習Android Jni時,一個二維 整數 數組的傳遞花了我好長時間,在網上查的資料都不全,當然最後是成功了,寫在這裡是為了自己記住,當然有人搜尋到並利用了我會很高興。

 in Android Java file public native boolean  add( int[][] qizidata,.....)用JDK工具生產jni 的*.h檔案your project path> ..Javajdk1.6.0_10binjavah -classpath ./bin JAVA Class name
//**************************************************************************//二維數組java -》JniJNIEXPORT jint JNICALL Java_com_Jung_add  (JNIEnv * env, jobjectobj, jobjectArray qizidata,jint value1, jintvalue2) {    jinti,j;    jintqizi[1024][1024];  //固定數組,測試用    jarraymyarray;    intsize = (*env)->GetArrayLength(env, qizidata);    for (i= 0; i < size &&i<1024 ; i++)    {      myarray =((*env)->GetObjectArrayElement(env, qizidata,i));      int col = (*env)->GetArrayLength(env,myarray);       jint *coldata =(*env)->GetIntArrayElements(env, (jintArray)myarray,0 );      for (j=0; j<col&& j <1024;j++)       {          qizi[i][j]= coldata[j];      }     (*env)->ReleaseIntArrayElements(env,(jintArray)myarray, coldata,0 );    }     return(qizi[0][0]+qizi[9][0]);}

//**************************************************************************//二維數組Jni -》Java JNIEXPORT jobjectArray JNICALLJava_com_marakana_NativeLib_GetIntArray
  (JNIEnv *env, jobject obj, jintx, jint y)
{   jobjectArray ret;    int i =0;    int j =0;    jclassintArrCls = (*env)->FindClass(env, "[I");    if (NULL== intArrCls)        return NULL;     ret =(*env)->NewObjectArray(env, x * y, intArrCls,NULL);     jinttmp[1024];//固定數組,測試用,注意別溢出    for (i= 0; i < x; i++) {       jintArray intArr =(*env)->NewIntArray(env,y);        for (j = 0; j <y; j++) {          tmp[j] = i + j;       }      (*env)->SetIntArrayRegion(env,intArr, 0, y,tmp);     (*env)->SetObjectArrayElement(env,ret, i,intArr);     (*env)->DeleteLocalRef(env,intArr);    }    returnret;}//**************************************************************************//下面代碼是網上搜的,沒驗證,忘記出處了,請原作者見諒// 二維String數組 JNI 提取 c_languge syntaxJNIEXPORT void JNICALL Java_TestArray_PrintArrays(JNIEnv *env, jclass class, jobjectArray array){    intsize = (*env)->GetArrayLength(env, array);    for(int i = 0; i < size; i++)    {       jarray myarray =((*env)->GetObjectArrayElement(env, array,i));       int leng =(*env)->GetArrayLength(env, myarray);       printf("length: %dn",leng);       for (int j = 0; j< leng; j++)       {          jstring string =((*env)->GetObjectArrayElement(env, myarray,i));          const char * chars =(*env)->GetStringUTFChars(env, string, 0);          printf("%s n", chars);          (*env)->ReleaseStringUTFChars(env,string, chars);       }    }} 

Android jni 二維數組 傳遞

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.