我知道,通常有很多方法可以解決某些問題。但在這裏,我知道我想擁有它哪種方式,但我無法使其與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