当前位置: 首页 > 网络应用技术

在JNI结构体操操作中实现类似的C ++调整方法

时间:2023-03-08 02:16:25 网络应用技术

  上一篇文章告诉JNI中的简单调用Java函数。接下来,我们必须解决上次剩下的疑问回答,如何用结构调用Java功能。

  假设:C ++想要通过Java一个称为Datast的结构,然后Android还需要定义相同的结构,保持与SO文件中的结构名称和字段相同的结构,否则不会查询。

  结构的内容如下:

  C ++传递的数据存储在:STD :: VEC ++ TOR M_VETARRAY中,它如何在Java中使用STL接收结构数据?

  我接下来逐渐解释?

  为了在Java代码中获取称为C ++调用的数据,此时,Java需要定义此类数据存储结构。

  查询结构在Java中的定义的位置

  请注意,目前,FindClass对应于定义Java结构的程序路径。您必须写全部,否则您将无法询问!

  像C ++方法一样,如果要将数据存储到容器中,则需要定义一个容器。在这里,您需要清除容器的大小,即需要传递给Java数据的数据大小,类似于C ++的数组。

  结构中有两种变量类型:字符串,int

  获取ID方法ID

  方法ID可以在vetindex中获取int值的方法

  如果您不知道如何在这里获取它,则可以将Java结构自动生成的功能结合在一起。

  为了让Java识别C ++的数据,我们需要更改类型。取决于数据流中的两种结构类型

  假设:字符串ID =“ 123”;

  注意:在JNI中,可以直接分配INT类型,无需特殊治疗

  在这里,我们已经达到了存储的重点。以上内容是此步骤的路面。

  在第二步中,我们假设C ++容器的大小为10,因此我们仍然使用10在这里处理10

  int nsize = 10;

  我们正在存储数据存储。我们被存储在顺序上。首先,我们必须定义一种招标方法。

  存储数据时,您需要使用此method_init_event参数

  例如,当数据插入C ++时,可以将向量用于推送_back方法,也可以使用插入方法。

  下面,首先显示存储大框架

  以上是一个粗略的分配过程。对于2个操作,让我们执行特定代码显示!

  步骤1:字符串

  步骤2:存储在objmodel对象中

  数据已存储在第五步中的结构中,因此Java的功能实际上在此处调用。

  假设此处调用的函数称为:recorddataandroidback(数组,bool类型)

  代码分析:

  当发生函数调用误差时,最容易发生的问题是Java函数参数的路径是错误的,或者格式不正确。90%是第三个参数中的问题。此外,有些问题会消失。让您发疯,现在让您找到它!交叉点

  在这一点上,已经解释了如何使用结构容器调用Java功能,朋友可以尝试一下!

  我是中国的好公民,C ++开发计划猿?

  原始:https://juejin.cn/post/710236118811305752