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 龔椿深 閱讀(1655) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 泽普县| 乌鲁木齐市| 修武县| 嘉义市| 建水县| 松原市| 会理县| 隆德县| 滁州市| 益阳市| 吴川市| 德昌县| 革吉县| 东乌| 文安县| 仪征市| 锡林浩特市| 佳木斯市| 浙江省| 建宁县| 黄浦区| 乌海市| 凯里市| 石门县| 吉安市| 平原县| 彰化市| 阳春市| 阜新市| 贵港市| 忻州市| 衡阳县| 连山| 宝应县| 湘阴县| 天峨县| 文山县| 彭阳县| 青海省| 达拉特旗| 龙江县|