`
jonson
  • 浏览: 165480 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JNI的参数传递 一二

阅读更多
最近在做android开发涉及到JNI的函数调用,总结了一些经验。
1.对于JNI中有多维数组相关参数传递的情况,可以将多维数组化为一维数组,然后进行传递。
因为在JAVA中int[3][4] 与int[12]是可以相互转化的。
2.对于一维数组的传递,记录如下:
JNIEXPORT jbyteArray JNICALL JNI_SaveAsBuffer
(JNIEnv *env,jclass clazz, ,jintarray in)
{//in is a int[][]
	jbyteArray byteArr = 0;
	MLong byteSize = 30;
        jbyte temp[30] = {0};

        jint i,j,mData[100][100]; //只是测试,固定的数组大小
        jarray myarray;
        int size = env->GetArrayLength(in);
        for (i = 0; i < size && i<100; i++)
        {
          myarray = (jarray)(env->GetObjectArrayElement(in, i));
          int col =  env->GetArrayLength(myarray);
          jint *coldata = env->GetIntArrayElements((jintArray)myarray, 0 );
          for (j=0; j<col && j <100; j++) 
          {
            mData[i][j] = coldata[j];//获取数据
          }

          env->ReleaseIntArrayElements((jintArray)myarray, coldata,0 );
         }
	byteArr = env->NewByteArray(byteSize);
	env->SetByteArrayRegion(byteArr,0,byteSize,(jbyte*)temp);
	
	return byteArr;
}

上面例子包含了多维数组的传入处理,及一维数组的返回。

对于不同类型的对象调用的创建函数是不同的,这个需要查找JNI头文件。
可以看附件

  • jni.zip (7.6 KB)
  • 下载次数: 15
分享到:
评论

相关推荐

    JNI 参数传递 Android 自定义对象

    JNI 各种参数传递,基本数据类型,自定义对象,系统对象

    JNI 传递和返回基本参数

    本文件是 JNI 传递和返回基本参数的 Demo,详细介绍见博客:https://blog.csdn.net/u011520181/article/details/79765336,无法资源分设置 0 分,也可以去博客下面的 github 地址下载

    java jni 传递汉字参数,包括 in out

    java jni 传递汉字参数,包括java传入dll 从dll传出到java 包括全部 java 代码 工程文件 全部vc++6.0 Dll 代码 工程文件 找了好久资料才完成的,传上来省的大家再走弯路。

    JNI中C和Java参数传递详细例子

    JNI中C和Java参数传递详细例子,各种数据类型,基本类型,数据,结构体,DEMO,非常适合初学者,一看就明,详细例子

    android jni 传递对象的demo

    android jni 传递对象的demo,展示了如何在java与C之间传递对象。详细介绍见相关博客。

    Jni中C++和Java的参数传递

    Jni中C++和Java的参数传递如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的...

    JNI与C++数据类型传递示例(包括ArrayList对象、ArrayList嵌套返回)

    一个C++(Ubuntu16.04+QT5.9.1)通过JNI,调用JAVA类及方法的示例。通过JNI传递和返回多种类型的参数,boolean ,int,String,ArrayList,ArrayList嵌套ArrayList&lt;ArrayList&lt;String&gt;&gt;等。

    Jni中C和Java的参数传递.doc

    Jni中C和Java的参数传递.doc

    java jni 传递汉字参数,读写ini

    java jni 传递汉字参数,包括java传入dll 从dll传出到java 读写ini 包括全部 java 代码 工程文件 全部vc++6.0 Dll 代码 工程文件 找了好久资料才完成的,传上来省的大家再走弯路。

    JNI学习二:字符串参数传递与返回值

    jni编写的一个示例,示例中包含一带参数的有返回值的函数。

    JNI开发Java调用C传递int、String、Array类型参数

    JNI开发Java调用C传递int、String、Array类型参数; 详情参考: int类型: (https://blog.csdn.net/niuba123456/article/details/80959892) String类型(https://blog.csdn.net/niuba123456/article/details/80977247);...

    JNI 调用(包含复杂对象传参)

    实现了jni 中java向vc dll传递list参数/String参数 对象的接口。vc代码可用vc6.0运行编译,java调用接口在src\common\CameraUtil.java里面。测试了好久才实现的(涉及到项目机密,部分资源文件没有上传,内部方法是...

    JAVA +jni c# 参数传递.rar

    JNI是java调用C++程序的一种实现方法,网上有一些相关的资料,但不一定能适用,这个文档我在学习JNI时综合网上资料总结的,本人亲测能够实现,希望下载的网友有什么问题多多反馈,希望对学习JNI的朋友有所帮助

    JNI完全技术手册 带完整书签

    Chap7:Jni中C++和Java的参数传递... 33 Chap8:如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组... 47 Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能... 47 Chap9:如何编写jni方法(转载...

    JNI-array-arg.rar_JNI-array-arg_jni_jni 数组_jni array

    JNI数组参数传递,在使用JNI编程时注意转换参数,尤其是数组的出入与传出。

    Jni中C++和Java的参数传递.pdf

    。。。

    Android工程调用jni算法(参数和返回值都为数组)

    网上有很多资料介绍jni数组,但是往往都是或者传递的参数为数组或者返回值为数组,本人看后自己写了一个二者都为数组的情形 可以直接用eclipse进行导入

    JNI调用大全

    Chap7:Jni中C++和Java的参数传递... 33 Chap8:如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组... 47 Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能... 47 Chap9:如何编写jni方法(转载).....

    JNI函数使用

    传递字符串数组 参数传递 JNI调用 代码清单15-10 在Linux平台上调用C函数的例程——Sample3 public class Sample3 { public native String[] stringMethod(String text); public static void main(String[] ...

Global site tag (gtag.js) - Google Analytics