小编use*_*370的帖子

Swig,返回一系列双打

我知道,通常有很多方法可以解决某些问题.但是在这里我知道我希望它采用哪种方式,但我无法使用Python和SWIG ...

我有一个C函数,它返回一个double值数组:

double *my(int x)
{
   double a,b,*buf;
   buf = malloc (x * sizeof(double));
   a=3.14;
   b=2.7;
   buf[0]=a;
   buf[1]=b;
   return buf;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我明确希望将数组作为返回值.不像在许多示例中那样写入输入数组的'void'函数.现在,我想获得一个SWIG-python包装器,它可以用作:

>>> import example
>>> print example.my(7)
[3.14,2.7]
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我都有一些概念上的问题 - 我总是得到s.th. 喜欢<Swig Object of type 'double *' at 0xFABCABA12>

我试图在swg文件中定义一些类型图:

%typemap(out) double [ANY] {
  int i;
  $result = PyList_New($1_dim0);
  for (i = 0; i < $1_dim0; i++) {
    PyObject *o = PyFloat_FromDouble((double) $1[i]);
    PyList_SetItem($result,i,o);
  }
}
Run Code Online (Sandbox Code Playgroud)

但我仍然无法按要求取出我的结果.有没有人有一个简单的代码示例来实现这个任务?

c python arrays swig return

9
推荐指数
1
解决办法
8507
查看次数

标签 统计

arrays ×1

c ×1

python ×1

return ×1

swig ×1