我知道,通常有很多方法可以解决某些问题。但在这里,我知道我想拥有它哪种方式,但我无法使其与Python和呷工作...Swig,返回一组双数
我有一个C函数,该函数返回我双倍值的数组:
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;
}
在这里,我明确想要数组作为返回值。不是,因为在很多例子中,一个'void'函数写入输入数组。现在,我想获得一大口,Python包装,它可能被用来作为:
>>> import example
>>> print example.my(7)
[3.14,2.7]
无论我做什么,我有一些概念上的问题,在这里 - 我总是得到某事物像<Swig Object of type 'double *' at 0xFABCABA12>
我想在我的SWG文件来定义一些typemaps:
%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);
}
}
但我仍是无法为需要得到我的结果。有没有人有一个简单的代码示例来实现这一任务?
ups,是的,这是我所面对的实际代码的超小部分。对困惑感到抱歉。 – user701370 2011-04-28 17:54:14