Найти - Пользователи
Полная версия: возврат_значений_из_C_функции
Начало » Python для новичков » возврат_значений_из_C_функции
1
math.beginer
нужно из C-шной функции вернуть значение типа numpy.ndarray(2,dtype='d') — numpy массив из двух элементов.

моя попытка что-то сделать
???double[2]???  summa( const double* pnts, const int n) {
double tmp0,tmp1;
int i;
tmp0 = 0.0;
tmp1 = 0.0;
for(i=0; i<n; ++i) {
tmp0+=*(pnts+2*i);
tmp1+=*(pnts+2*i+1);
}
// printf("tmp=%lf\n",tmp);
return ????;
}
В Питоне хотелось что-бы работало так:
mod_test=numpy.ctypeslib.load_library('libtest', '.')
mass=numpy.ndarray(2*n,dtype='d')
...
result=mod_test.summa(mass.ctypes.data,n)
doza_and
так как вы хотите сделать не получится (точнее из c можно попросить питон сделать numpy double) т.к. питон захочет сам контролировать время жизни массива.
Я почти всегда делаю так: объект создается в питоне - а сишный код модифицирует содержание.
# python:
a=numpy.zeros(n,dtype='d')
b=numpy.zeros(2,dtype='d')
n=10
mod_test.summa(a.ctype.data,b.ctype.data,n)
// C:
void summa(const double* a,double* b,int n)
{
....
}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB