我知道,通常有很多方法可以解决某些问题.但是在这里我知道我希望它采用哪种方式,但我无法使用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)
但我仍然无法按要求取出我的结果.有没有人有一个简单的代码示例来实现这个任务?