标签:
我们知道,使用javah产生c/c++当在头文件,将java定义 native 功能,以产生相应jni层功能,如下面:
/* * Class: com_lms_jni_JniTest * Method: getTestString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_lms_jni_JniTest_getTestString (JNIEnv *, jobject);
对于传统的JNI编程来说,JNI方法跟Java类方法的名称之间有一定的相应关系。要遵循一定的命名规则,例如以下:
public native String addTail(String tail);
jstring Java_com_lms_jni_HwDemo_addTail(JNIEnv * e, jobject clazz, jstring tail);
注意,我们也能够利用函数注冊的方法,将Java层的方法名跟JNI层的方法名的相应关系保存起来。注冊到DVM中,就不须要这种命名规范了。
java | jni |
char | jchar |
byte | jbyte |
short | jshort |
int | jint |
long | jlong |
float | jfloat |
double | jdouble |
boolean | jboolean |
typedef union jvalue { jboolean z; jbyte b; jchar c; jshort s; jint i; jlong j; jfloat f; jdouble d; jobject l; } jvalue;
Java 类型 | 类型签名 |
boolean | Z |
byte | B |
char | C |
short | S |
int | I |
long | L |
float | F |
double | D |
类 | L全限定名;,比方String, 其签名为Ljava/lang/util/String; |
数组 | [类型签名, 比方 [B |
public string addTail(String tail, int index)
(Ljava/util/String;I)Ljava/util/String;
public int addValue(int index, String value,int[] arr)
(ILjava/util/String;[I)I
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Android有关JNI 学习(两)为JNI方法名称,数据类型和方法签名的一些知识
标签:
原文地址:http://www.cnblogs.com/bhlsheji/p/4646079.html