使用JNI時C++中的類型對應

在使用JNI的時候,要注意JAVA中傳入的參數要和C++的參數要意義對應。

boolean在JNI中對應jboolean,是8字節(unsigned)

byte在JNI對應jbyte,是8字節。

char在JNI對應jchar,是16字節(unsigned)
   short
在JNI對應jshort,是16字節
   int
在JNI對應jint,是32字節
   long
在JNI對應jlong,是64字節
   float
在JNI對應jfloat,是32字節
   double
在JNI對應jdouble,是64字節
   void
在JNI對應void,貌似是沒有大小(n/a).

這些基本的都是一一對應的。除了上面的類型,你還可以直接傳一個相當於是JAVA的自定義類,具體方法如下:
在JAVA中有Obiect的類,在C++中同樣有對應的類jobject。我們知道任何的類都繼承與Object,那麼我們就可以通過jobject來延伸出各種類。例如接受一個String類型的對象:
JNIEXPORT jstring JNICALL XXX_XXX_XXX_getString(JNIEnv *env,jobject obj,jstring string){
char buf[128];
const char *str=(*env)->GetStringUTFChars(env,string,0);
(*env)->ReleaseStringUTFChars(env,string,str);
}
(不全,因有事)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章