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


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


          網站導航:
           
          主站蜘蛛池模板: 治县。| 泌阳县| 宁乡县| 凌源市| 黄山市| 彩票| 肇庆市| 西昌市| 井陉县| 兴安盟| 海盐县| 保康县| 孟津县| 泾源县| 崇州市| 独山县| 平南县| 利川市| 连城县| 桦川县| 弥渡县| 红安县| 盱眙县| 双柏县| 台前县| 抚远县| 三亚市| 突泉县| 铜梁县| 海淀区| 阳山县| 达尔| 丹江口市| 奇台县| 开封县| 阳朔县| 开阳县| 桑日县| 子洲县| 定日县| 邻水|