swig 啥时候需要类型映射?
Posted
技术标签:
【中文标题】swig 啥时候需要类型映射?【英文标题】:When is a typemap necessary for swig?swig 什么时候需要类型映射? 【发布时间】:2011-07-19 08:09:44 【问题描述】:我在.i
文件中有这样的功能:
t_demo * t struct_new();
似乎我不需要任何类型映射,它就可以工作。 转换后可以直接使用:
use test;
$a = test::struct_new;
swig 什么时候需要 typemap?
【问题讨论】:
【参考方案1】:例如,我们可以为 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 手册中记录了更多用途。
【讨论】:
但是我可以通过访问器函数获取字段,对吗?所以这不是必需的...... “Typemaps 通常不是使用 SWIG 的必需部分”,但在某些边缘情况下可能需要这样做 - 例如没有访问器,也无法添加。 这是有道理的。顺便说一句,swig 的-shadow
选项是否仅适用于 c++?我试图让它与 c 结构一起工作,但不工作......以上是关于swig 啥时候需要类型映射?的主要内容,如果未能解决你的问题,请参考以下文章