Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl swig何时需要类型映射?_Perl_Swig - Fatal编程技术网

Perl swig何时需要类型映射?

Perl swig何时需要类型映射?,perl,swig,Perl,Swig,我在.I文件中有这样一个函数: t_demo * t struct_new(); 我似乎不需要任何类型的地图,它只是工作。 转换后,我可以直接使用它: use test; $a = test::struct_new; 当swig需要类型映射时?例如,我们可以为t_demo创建“out”类型映射,并返回用此结构的选定成员填充的哈希: %typemap(out) t_demo { HV* tmp = newHV(); SV* t_data = newSViv($1.int_field

我在
.I
文件中有这样一个函数:

t_demo * t struct_new();
我似乎不需要任何类型的地图,它只是工作。 转换后,我可以直接使用它:

use test;

$a = test::struct_new;

当swig需要类型映射时?

例如,我们可以为t_demo创建“out”类型映射,并返回用此结构的选定成员填充的哈希:

%typemap(out) t_demo {
  HV* tmp = newHV();

  SV* t_data = newSViv($1.int_field1);
  hv_store(tmp, "int_field1", 4, t_data, 0);

  $result = sv_2mortal(newRV_noinc((SV*) tmp));
  argvi++;
}

swig手册中记录了更多的使用情况。

但是我可以获得具有访问器功能的字段,对吗?因此这不是必需的…“类型映射通常不是使用swig所必需的一部分”,但在某些边缘情况下可能需要这样做-例如,没有访问器,无法添加。这是有意义的。顺便说一句,SWIG的代码>阴影>代码>选项只与C++一起工作吗?我试图让它与c结构,但不工作。。。