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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 绵阳市| 罗平县| 南投市| 旬阳县| 佛山市| 五寨县| 四会市| 东乌珠穆沁旗| 万荣县| 临高县| 炉霍县| 禄丰县| 米脂县| 寻甸| 黑龙江省| 永泰县| 龙江县| 郧西县| 南靖县| 湛江市| 双鸭山市| 天长市| 丹东市| 碌曲县| 安阳县| 江源县| 百色市| 永川市| 安庆市| 遂宁市| 阜城县| 团风县| 石泉县| 怀远县| 光山县| 龙山县| 丁青县| 迭部县| 聂拉木县| 鄂尔多斯市| 城口县|