python结构体数组传出接收c动态库 swig_如何在SWIG / Python中将结构列表传递给C

您的示例有点困惑,因为您的C函数使用Foo *,但是您的类型映射使用Foo **(即Foos数组与指向Foos的指针数组).我假设您的意思是后者,因为这是从给出的函数声明中判断数组有多长时间的唯一明智的方法.

在眼前的问题上,“如何将Python对象转换为给定类型的C指针?”我通常通过让SWIG为我生成一些代码然后对其进行检查来解决该问题.因此,例如,如果您有一个函数void bar(Foo *);然后SWIG将在包装器中生成一些代码:

SWIGINTERN PyObject *_wrap_bar(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {

PyObject *resultobj = 0;

Foo *arg1 = (Foo *) 0 ;

void *argp1 = 0 ;

int res1 = 0 ;

PyObject * obj0 = 0 ;

if (!PyArg_ParseTuple(args,(char *)"O:bar",&obj0)) SWIG_fail;

res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Foo, 0 | 0 );

if (!SWIG_IsOK(res1)) {

SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "bar" "', argument " "1"" of type '" "Foo *""'");

}

arg1 = reinterpret_cast< Foo * >(arg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值