您的位置:首页 > 其它

JNI开发之基本数据类型转换

2017-07-03 11:41 274 查看
前言:我们知道Java和中基本数据类型和c中是有一些差别的,所以jni中用宏定义来转换基本数据类型如 java中的int类型 在jni中用jint(实际是long的宏定义),比如typedef  long jint。

------------分割线---------

我们来看一个小案例:jni访问java中的int类型并且返回一个jni中定义的int类型

java源码:package com.fly;

public class TestJni {

// 访问传入的java 的 传入参数 i 并且改变数值 再返回
public static native int jniForInt(int i);

public static void main(String[] args) {
int i = jniForInt(100);
System.out.println("来自c修改后的int"+i);
}

// 加载动态库
static {
System.loadLibrary("JNI");
}
}然后接着javah生成.h文件,这里说明一下,其实我们没有必要都要自动生成,其实我们也可以自己手写,拿上一个案列的.h文件更改一下,其实套路都差不多:



然后编写01.c的代码:#include"com_fly_TestJni.h"

JNIEXPORT jint JNICALL Java_com_fly_TestJni_jniForInt
(JNIEnv *env, jclass jcs, jint argument_int){
printf("来自java的int数值为%ld", argument_int);

//因为jint是long类型所以直接赋值
long new_int = argument_int;

new_int++;//加1后返回

return new_int;
}生成dll文件,复制到java项目中,然后运行:



-----------分割线----------

我们再来看下其他的数据类型:



----------------完--------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: