首页 > 解决方案 > Java+SWIG 如何访问结构中数组的元素?

问题描述

尝试将 C 结构传入和传出 Java。一切正常,除了我无法弄清楚如何在结构内读取和写入数组的元素。我阅读了有关 memberin 类型映射的信息,但我确信我仍然没有正确使用它。我的模块文件如下所示:

%include "typemaps.i"

%typemap(memberin) uint8_t [8] {
  int i;
  for (i = 0; i < 8; i++) {
    $1[i] = $input[i];
  }
}

typedef struct
{
   uint8_t myarray[8];
   int myvar;
} MyStruct;

在 Java 中,我希望能够像这样使用生成的 MyArray 对象:

MyStruct s = new MyStruct();
SWIGTYPE_p_uint8_t[] myarray = s.getMyarray();
s.setMyarray(myarray);

但相反,生成的 getMyarray() 返回 SWIGTYPE_p_uint8_t 而不是它的数组。这同样适用于 s.setMyArray 的参数。

有人可以帮忙吗?

标签: javaarraysstructswig

解决方案


推荐阅读