NDK

Java中JNI的使用详解第三篇:传参之基本数据类型

2017-02-18  本文已影响0人  Mr_Ray

基本数据类型的传递

第一步: 编写java

public class HelloWorld{

    static {
        System.loadLibrary("native");
    }
    
    public native int getInt(int in);
    public native boolean getBoolen(boolean bol);
    public native byte getByte(byte by);
    public native long getLong(long lo);
    public native char getChar(char ch);
    public native double getDouble(byte db);
    public native short getShort(short sh);
    public native float getFloat(float fl);

    public static void main(String[] args) {
    }   
}

第二步: 编译、获取,更改JNI头文件名

$ javac HelloWorld.java
$ javah HelloWorld
$ mv HelloWorld.h  HelloWorld.c

第三步: 查看文件

#include <jni.h>

JNIEXPORT jint JNICALL Java_HelloWorld_getInt
  (JNIEnv *, jobject, jint);

JNIEXPORT jboolean JNICALL Java_HelloWorld_getBoolen
  (JNIEnv *, jobject, jboolean);


JNIEXPORT jbyte JNICALL Java_HelloWorld_getByte
  (JNIEnv *, jobject, jbyte);

JNIEXPORT jlong JNICALL Java_HelloWorld_getLong
  (JNIEnv *, jobject, jlong);


JNIEXPORT jchar JNICALL Java_HelloWorld_getChar
  (JNIEnv *, jobject, jchar);


JNIEXPORT jdouble JNICALL Java_HelloWorld_getDouble
  (JNIEnv *, jobject, jbyte);


JNIEXPORT jshort JNICALL Java_HelloWorld_getShort
  (JNIEnv *, jobject, jshort);


JNIEXPORT jfloat JNICALL Java_HelloWorld_getFloat
  (JNIEnv *, jobject, jfloat);

第四步: 总结JNI中的基本数据类型

Java类型 本地类型 描述
boolean jboolean C/C++8位整型
byte jbyte C/C++带符号的8位整型
char jchar C/C++无符号的16位整型
short jshort C/C++带符号的16位整型
int jint C/C++带符号的32位整型
long jlong C/C++带符号的64位整型e
float jfloat C/C++32位浮点型
double jdouble C/C++64位浮点型

下一节使用基本数据类型

上一篇下一篇

猜你喜欢

热点阅读