JNI本地函数返回结构体(结构体成员为数组的处理办法) |
您所在的位置:网站首页 › 函数怎么返回结构体数组 › JNI本地函数返回结构体(结构体成员为数组的处理办法) |
参考资料: JNI官方中文资料. JNI 返回结构体参数的方法. JNI返回自定义结构体数组到Java. C++代码中有一个结构体,想将其作为本地函数的返回值传递给JAVA,那么要写一个自定义的JAVA类,其成员和该结构体一一对应。(C++中的unsigned char*等单字节的类型,JAVA中可以写为byte[])(类型的对应要注意字节数相等) 接下来分几步在C++中构建JAVA对象作为返回值:(省略返回值、参数,函数的用法的细节详见参考资料) 1.获取定义好的类: jclass FindClass()2.获取该类的构造函数ID: jmethodID GETMethodID()3.新建类对象:(即为返回值) jobject NewObject()4.获取类的域的ID:(这里的域有时为一个jobject对象,如String对象,以及下文中说到的数组) jfield GetFieldID()5.设置对应ID的域的值:(设置为C++中结构体成员的值) setField() 结构体成员为数组的处理办法*JAVA数组实质是一个类对象 所以可以将数组作为一个jobject对象处理,注意两点: 1.GetFieldID()最后一个参数(类型签名)为:“[数组类型对应的签名”。(如int[]数组对应的签名为"[I”,byte[]数组对应的签名为"[B") 2.上文中的第5步用SetObjectField(),其最后一个参数(jobject对象)的类型为:j数组类型Array(它是jobject的子类,所以参数类型兼容) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |