<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    codefans

    導航

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    程序設計鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    我的一個JNI的例子。

    例證一, 從c語言向JAVA傳遞類

    /*
     * Class:     sms_SendSMS
     * Method:    ReceiveAllMessage
     * Signature: (Lsms/SM_PARAM;)I
     */
    JNIEXPORT jobjectArray JNICALL Java_sms_SendSMS_ReceiveAllMessage
      (JNIEnv *env, jclass)
    {
     jobjectArray array=NULL; //定義數組對象
     const int LEN = 30;
     SM_PARAM *sm_param_temp=new SM_PARAM[LEN];
     for(int j =0; j < LEN; j++)
     {
      sm_param_temp[j].TP_UD[0]='\0';
     }
     int temp=ReceiveAllMessage(sm_param_temp);
     if(temp <= 0)
     {
      return array;
     }
     
     jclass cls = (env)->FindClass("sms/SM_PARAM");
     array = env-> NewObjectArray(temp, cls, NULL);
     for(int i=0; i< temp; i++)//,sm_param_temp++
     {
      if (cls != 0)
      {
       jmethodID mid = env->GetMethodID(cls,NULL,"()V");
       if(mid != 0)
       {
        jobject obj = env->NewObject(cls,mid,0);

    //   env->FindClass("java/lang/String")
    //   jmethodID mid1 = env->GetMethodID(cls,"setContent","(Ljava/lang/String;)V");

        jstring jstr = 0;

     
        jfieldID TPA = env->GetFieldID(cls,"TPA","Ljava/lang/String;");
        jstr = env->NewStringUTF(sm_param_temp->TPA);
        env-> SetObjectField(obj, TPA, jstr);
        env->ReleaseStringUTFChars(jstr, sm_param_temp->TPA);
        
        jfieldID TP_SCTS = env->GetFieldID(cls,"TP_SCTS","Ljava/lang/String;");
        jstr = env->NewStringUTF(sm_param_temp->TP_SCTS);
        env-> SetObjectField(obj, TP_SCTS, jstr);
        env->ReleaseStringUTFChars(jstr, sm_param_temp->TP_SCTS);
        
        jfieldID TP_UD = env->GetFieldID(cls,"TP_UD","[B");    
        jbyteArray tpArray = env->NewByteArray(161);
        for(int k=0; k<160; k++) 
        {
         const signed char ch = sm_param_temp->TP_UD[k];
         if(ch == '\0'){
          break;
         }
         env->SetByteArrayRegion(tpArray, k, 1, &ch);
        }
        const signed char end = '\0';
        env->SetByteArrayRegion(tpArray, 160, 1, &end);

        env->SetObjectField(obj, TP_UD, tpArray);
    //    env->ReleaseByteArrayElements(tpArray, sm_param_temp->TP_UD, mode);

        jchar ch = sm_param_temp->index;
        jfieldID index = env->GetFieldID(cls,"index","C");
        env-> SetCharField(obj, index, ch);

        env->SetObjectArrayElement(array, i, obj);
       }

      }

     }

     delete[] sm_param_temp;

     return array;
    }


    例證二, 從JAVA向c語言傳遞類

    /*
     * Class:     sms_SendSMS
     * Method:    EncodePdu
     * Signature: (Lsms/SM_PARAM;)Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_sms_SendSMS_EncodePdu
      (JNIEnv *env, jclass, jobject src)
    {
     SM_PARAM *sm_param_temp=new SM_PARAM;

     jclass cls = (env)->GetObjectClass(src);
     if (cls != 0)
     {
      jfieldID TPA = env->GetFieldID(cls,"TPA","Ljava/lang/String;");
      jstring jstr = (jstring) env->GetObjectField(src, TPA);
      const char *temp;
      jboolean copy='1';
      temp = env->GetStringUTFChars(jstr, &copy);
      strcpy(sm_param_temp->TPA, temp);  
    //  env->ReleaseStringUTFChars(jstr, sm_param_temp->TPA);
      
      jfieldID TP_SCTS = env->GetFieldID(cls,"TP_SCTS","Ljava/lang/String;");
      jstr = (jstring)env-> GetObjectField(src, TP_SCTS);
      temp = env->GetStringUTFChars(jstr, &copy);
      strcpy(sm_param_temp->TP_SCTS, temp);  
      
      jfieldID SCA = env->GetFieldID(cls,"SCA","Ljava/lang/String;");
      jstr = (jstring)env-> GetObjectField(src, SCA);
      temp = env->GetStringUTFChars(jstr, &copy);
      strcpy(sm_param_temp->SCA, temp);  
      

      jfieldID TP_UD = env->GetFieldID(cls,"TP_UD","[B");    
      jbyteArray tpArray = (jbyteArray)env-> GetObjectField(src, TP_UD);
      if(tpArray != NULL)
      {
       for(int k=0; k<env->GetArrayLength(tpArray); k++) 
       {
        sm_param_temp->TP_UD[k]= *(env->GetByteArrayElements(tpArray, &copy));
       }
      }
      sm_param_temp->TP_UD[160] = '\0';
    //    env->ReleaseByteArrayElements(tpArray, sm_param_temp->TP_UD, mode);  

      jchar ch = 0;
      jfieldID index = env->GetFieldID(cls,"index","C");
      sm_param_temp->index = (char)env->GetCharField(src, index);

      jfieldID TP_PID = env->GetFieldID(cls,"TP_PID","C");
      sm_param_temp->TP_PID = (char)env->GetCharField(src, TP_PID);

      jfieldID TP_DCS = env->GetFieldID(cls,"TP_DCS","C");
      sm_param_temp->TP_DCS = (char)env->GetCharField(src, TP_DCS);  
     }
     
     char *dst = new char[400];
     int rValue = EncodePdu(sm_param_temp, dst);

     jstring jstr = 0;
     jstr = env->NewStringUTF(dst);

     delete sm_param_temp;
     delete[] dst;
     
     return jstr;
    }

    posted on 2005-11-06 15:03 春雷的博客 閱讀(852) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 青青草免费在线视频| 四虎永久免费影院| 免费人成网站在线观看10分钟| 日本一道在线日本一道高清不卡免费| 亚洲欧洲综合在线| 黄+色+性+人免费| 国产成人亚洲精品影院| 成年网站免费入口在线观看| 亚洲精品99久久久久中文字幕| 黄网站色视频免费观看45分钟| 国产91色综合久久免费分享| 亚洲大香伊人蕉在人依线| 国产1024精品视频专区免费| 国产av无码专区亚洲av果冻传媒| 国产成人1024精品免费| 国产成人综合久久精品免费| 久久精品国产亚洲AV香蕉| 污视频网站免费在线观看| 国产福利电影一区二区三区,亚洲国模精品一区 | 女人18一级毛片免费观看| 亚洲国产精品无码久久一区二区| 中文字幕一区二区免费| 又黄又爽的视频免费看| 亚洲免费无码在线| 中文字幕亚洲免费无线观看日本| 国产免费AV片在线观看播放| 国产成人亚洲综合色影视 | 中国在线观看免费国语版| 亚洲国产精品无码中文lv| 亚洲免费日韩无码系列| 无码午夜成人1000部免费视频| 国产精品亚洲片在线va| 24小时在线免费视频| 亚洲精华国产精华精华液 | 99热在线精品免费全部my| 高h视频在线免费观看| 亚洲AV无码久久| 暖暖免费高清日本一区二区三区| WWW免费视频在线观看播放| 亚洲国产精品午夜电影| 亚洲精品无码久久久|