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项目中,然后运行:
-----------分割线----------
我们再来看下其他的数据类型:
----------------完--------
------------分割线---------
我们来看一个小案例: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项目中,然后运行:
-----------分割线----------
我们再来看下其他的数据类型:
----------------完--------
相关文章推荐
- 【Android应用开发】-(15)JNI----基本数据类型
- 【无限互联】iOS开发视频教程—2.4iPhone开发之基本数据类型转换
- Java JNI开发时常用数据类型与C++中数据类型转换
- JNI基本数据类型转换
- Android JNI ,jni基本数据类型转换
- Java基本数据类型转换
- 基本数据类型,基本数据类型对应的类,String类型的转换
- Java基本数据类型转换
- java 基本数据类型之间的转换
- Java 基本数据类型转换
- Morphx基本数据类型2 + 报表开发
- Symbian OS 开发初级手册 (2)基本数据类型
- java 基本数据类型转换
- Symbian OS 开发初级手册 (2)基本数据类型
- 【ZZ】COleVariant与常用基本数据类型之间的转换
- 基本数据类型间的转换 (转)
- 关于java 基本数据类型之间的转换
- 区分方法重载与基本数据类型的转换
- JAVA基本数据类型与其他语言数据类型之间的转换方法
- Symbian OS 开发初级手册 (2)基本数据类型