jni返回结构体数组

本文详细介绍了JNI如何返回结构体数组的步骤,包括FindClass、NewObjectArray、GetMethodID、GetFieldID等关键操作,并提供了相应的Android代码示例,帮助开发者理解并实现这一功能。
摘要由CSDN通过智能技术生成


    jni返回结构体数组.这个卡了我两天.好郁闷.从网上找了好多的办法都不成功. 可能是人品问题,呵呵呵 

    好在现在搞定了.把源码贴出来让大家也看看,希望能帮到那些和我人品不好的人嘿嘿..

   其实回想起来.挺简单的. 返回结构体数组有如下步骤.

   /*
  * 返回一个结构体数组步骤
  * 1.通过FindClass找到要返回的android中定义的class.
  * 2.通过NewObjectArray创建一个要返回的结构体数组.
  * 3.通过GetMethodID得到你要返回的class的默认构造方法
  * 4.通过GetFieldID得到定义的class里面所有的成员
  * 5.通过NewObject创建一个对应的class对象
  * 6.通过SetObjectField为5创建的class对象赋值(如果字段为int,那么就用SetIntField这个方法)
  * 7.通过SetObjectArrayElement把创建的class对象放到创建的objectArray里面去
  * 8.返回这个objectArray对象.
  * 9.完成. 就这么简单.
  * */

   是不是简单啊. 嘿嘿嘿嘿.

    好.现在看是放源码.

   android 代码.

   这个代码是activity 代码

package com.example.jnitest2;
 
 import android.os.Bundle;
 import android.app.Activity;
 import android.util.Log;
 import android.view.Menu;
 
 public class MainActivity extends Activity {
 
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
 		setContentView(R.layout.activity_main);
 		
 		MX2 changeJni = new MX2();
 		
         changeJni.displayParms("Hello World!", 100, true);
 
         int ret = changeJni.add(12, 20);
         Log.e("logZ", "相加结果为:"+ret);
         
         boolean[] blList = new boolean[] { true, false, true };
         changeJni.setArray(blList);
 
         String[] strList = changeJni.getStringArray();
         for (int i = 0; i < strList.length; i++) 
         {
         	 Log.e("logZ", "第"+i+"string为:"+ strList[i]);
         }
  
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值