返回值是一个ByteArray数组,我该如何在C中返回呀?char myarray[200];JNIEXPORT jbyteArray JNICALL Java_www_seeyon_com_crimsist_crimsistNa_proc4
  (JNIEnv *env, jobject obj, jint num)
{
   Read(myarray);  //把数据取到数组中,不一定全是可显示字符 //接下来该怎么返回给Java呢?}谢谢

解决方案 »

  1.   

    楼主不见人了????
    我用到的一个函数,希望对有需要的XDJM有帮助
    JNIEXPORT jbyteArray JNICALL Java_com_test_encrypt_Encrypt_encryptData
      (JNIEnv *env, jclass clazz, jbyteArray encByteArr)
    {
    jbyte * mybyte =env->GetByteArrayElements(encByteArr,0);

       char * addChsrc = (char *)mybyte; const char * chSrc =addChsrc; 
    int length = CompStrZero(chSrc);

    char *chDes = new char[length + 1];
    int *chDes_len = new int[length + 1]; int Enreturn = EncryptData (chSrc,chDes,chDes_len); jbyteArray RtnArr = NULL;
    if (Enreturn == 0){ jsize arrsize = (jsize)length; RtnArr =env->NewByteArray(arrsize);
    env->SetByteArrayRegion(RtnArr,0,length,(jbyte*)chDes);
    }
    env->ReleaseByteArrayElements(encByteArr,mybyte,0);
    if (chDes){

    delete []chDes;
    chDes = NULL;}
    if(chDes_len){

    delete []chDes_len;
    chDes_len = NULL;} return RtnArr;
    }
    但是,在特定情形下,我用到的时候有点不爽,在java那边明明传了888个字符过来,用这个方法也确实收到了int byteLen = int(env->GetArrayLength(decByteArr));但是,用这个 cout << "This is the SRC from java: "
     << mybyte
     << "\n";
    打印时,才得1/4的长度