我想包装下面的C函数。注意,从Foo\u t*到Bar\u t*的类型转换:
void function(Foo_t * f) {
Bar_t * b = (Bar_t *) f; // casting is done in C original code
//do sth with b
}
Swig生成一个遵循以下模式的包装器:
void wrap_function( Foo_t *foo ) {
function(foo);
}
但在python中,我想使用Bar\t实例调用我的包装器函数:
b = Bar_t()
function(b)
所以,我开始了以下类型映射:
%typemap(in) Foo * {
Bar_t *temp;
int res0 = 0;
Foo_t *arg = 0;
res0 = SWIG_ConvertPtr($input, (void **) &temp, $descriptor(Bar_t *), 0|0);
if (!SWIG_IsOK(res0)) {
SWIG_exception_fail(SWIG_ArgError(res0), "in method '" "function" "', argument " "1"" of type '" "Bar_t *""'");
}
$1 = (Foo_t *) temp;
function(arg);
}
但是抛出了异常!你知道吗
我怎样才能从酒吧到餐厅?你知道吗
如果让typemap期望一个Python条形图包装Foo*输入,那么就不能将Foo*传递给Foo*输入。相反,请导出强制转换辅助对象。注意
%inline
表示法实现并导出内容的包装器。你知道吗测试.h
测试.c
测试.i
测试:
相关问题 更多 >
编程相关推荐