android开发--- jni返回结构体
来源:互联网 发布:c 语言英文怎么说 编辑:程序博客网 时间:2024/06/06 12:23
1. java 与c 的jni部分有不同的数据类型,但是当jni部分返回值是一个结构体时怎么办呢?网上都是DiskInfo这个例子,但是在我这儿一运行时就会出错,所以修改了一下。
java在调用jni时多加了一个 jobject,
2. jni 中的代码
3. DiskInfo.java,新添加的一个class
4. HelloJni.java 都在onCreate中添加
[参]http://hi.baidu.com/bluecagali/item/a777cfd326bfa7cf1a72b41a
http://bbs.csdn.net/topics/380133924
2. jni 中的代码
- struct {
- char name[256];
- int serial;
- }DiskInfo;
- //返回一个结构数组,返回一个硬盘信息的结构数组
- JNIEXPORT jobject JNICALL Java_com_example_hellojni_HelloJni_getStruct(JNIEnv *env, jobject _obj, jobject diskobj)
- {
- //获取Java中的实例类
- jclass objectClass = (*env)->FindClass(env, "com/example/hellojni/DiskInfo");
- //获取类中每一个变量的定义
- jfieldID str = (*env)->GetFieldID(env, objectClass,"name","Ljava/lang/String;");
- jfieldID ival = (*env)->GetFieldID(env, objectClass,"serial","I");
- (*env)->SetObjectField(env,diskobj,str, (*env)->NewStringUTF(env, "hello world"));
- (*env)->SetIntField(env, diskobj,ival,10);
- return diskobj; //返回object数组
- }
- package com.example.hellojni;
- public class DiskInfo {
- public String name; //名字
- public int serial; //序列号
- public DiskInfo(int num, String myname){
- serial = num;
- name = myname;
- }
- }
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- TextView tv = new TextView(this);
- tv.setText( stringFromJNI() );
- DiskInfo disk_info_arg = new DiskInfo(123, "abc");
- DiskInfo diskInfo = getStruct(disk_info_arg);
- System.out.println("name:" + diskInfo.name);
- System.out.println("Serial:" + diskInfo.serial);
- setContentView(tv);
- }
- public native String stringFromJNI();
- public native DiskInfo getStruct(DiskInfo disk_info);
http://bbs.csdn.net/topics/380133924
0 0
- android开发--- jni返回结构体
- android开发--- jni返回结构体
- Android------- jni返回结构体
- JNI 返回结构体参数
- JNI 返回结构体参数
- JNI 返回结构体参数
- JNI 返回结构体参数
- JNI 返回结构体参数
- jni返回结构体数组
- JNI 返回结构体参数
- Jni返回结构体数组
- JNI 返回结构体参数
- JNI 返回结构体参数(1)
- JNI 返回结构体参数【转】
- JNI 返回结构体参数的方法
- 5.4jni返回结构数组
- [JNI] 开发基础(7)结构体
- JNI返回自定义结构体数组到Java
- 中国地理数据
- Linux中的tar命令,压缩和解压缩
- 趣味算法之求余 a^b%m;
- 【备忘】获取设备及系统信息
- mysql演化历程
- android开发--- jni返回结构体
- C++类的4个默认成员函数
- 使用maven插件反向映射generatorConfig.xml生成代码
- 浮动( 上机2)
- 获取当前日期
- 详解统计信号处理之 克拉美罗界
- 使用Amazon AWS搭建GPU版tensorflow深度学习环境
- 【ssoj1027】树形图计数
- redis :jedisTemplate中的Zset 存储