Java,J2EE,Weblogic,Oracle

          java項目隨筆
          隨筆 - 90, 文章 - 6, 評論 - 61, 引用 - 0
          數據加載中……

          android jni之C 和 C++ 函數實現的比較

          代碼:

          1.  jclass test_class = env->GetObjectClass(obj);

          2.  jfieldID id_num = env->GetFieldID(test_class, "num", "I");

          編譯錯誤提示:

          /home/miyuehu/work/WebJsTest/jni/jnitest.c:22: error: request for member 'GetObjectClass' in something not a structure or union
          /home/miyuehu/work/WebJsTest/jni/jnitest.c:23: error: request for member 'GetFieldID' in something not a structure or union

           

          注意:jni.h頭文件中對于***.c  &  ***.cpp采用不同的定義


          jclass (JNICALL *GetObjectClass)   (JNIEnv *env, jobject obj);

          jclass GetObjectClass(jobject obj) {
                  return functions->GetObjectClass(this,obj);
              }

           

          對于***.c

          1. jclass test_class = (*env)->GetObjectClass(env, obj);

          2. jfieldID id_num = (*env)->GetFieldID(env, test_class, "num", "I");

           

           

          對于 ***.cpp

          1. jclass test_class = env->GetObjectClass(obj); 

          2. jfieldID id_num = env->GetFieldID(test_class, "num", "I"); 

           

          在 C 中,

          JNI 函數調用由“(*env)->”作前綴,目的是為了取出函數指針所引用的值。

          在 C++ 中,

          JNIEnv 類擁有處理函數指針查找的內聯成員函數。

          下面將說明這個細微的差異,其中,這兩行代碼訪問同一函數,但每種語言都有各自的語法。

          C 語法:jsize len = (*env)->GetArrayLength(env,array);

          C++ 語法:jsize len =env->GetArrayLength(array);

          posted on 2013-01-30 18:44 龔椿深 閱讀(1658) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 宁国市| 香格里拉县| 定襄县| 镇康县| 阳西县| 华安县| 西和县| 海城市| 报价| 吉水县| 太白县| 扶余县| 福安市| 文山县| 阿克苏市| 叙永县| 江门市| 长葛市| 三穗县| 时尚| 左贡县| 文成县| 通州区| 游戏| 罗定市| 凤台县| 吴桥县| 韩城市| 永康市| 墨竹工卡县| 阜新市| 策勒县| 奉节县| 靖宇县| 芒康县| 嘉峪关市| 翁源县| 香格里拉县| 安阳市| 新津县| 昌平区|