使用ctypes在python中调用c函数

2024-09-28 23:43:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从python调用c函数,我用c编写了以下代码

struct _returndata
{
    double* data;
    int row;
    int col;
};

int mlfAddmatrixW(struct _returndata* retArr)
{
    double data[] = {1,2,3,4,5,6,7,8,9} 
    retArr->row = 3;
    retArr->col = 3;        
    memcpy(retArr->data, data, 9*sizeof(double));            
    return  1;
}

这是我用python编写的代码:

^{pr2}$

数据的内容已更改,但列和行仍为0。我该怎么解决呢? 有没有可能在python中创建一个动态数组,因为在本例中,我创建了一个包含9个元素("data", c_double*9),的数组。我知道数组的大小在我调用mlfAddmatrixW函数后,数组的大小将是col*row。在


Tags: 函数代码datareturncol数组structint
1条回答
网友
1楼 · 发布于 2024-09-28 23:43:49

在C和Python中有一个不同的结构:一个是指向double的指针,另一个是double数组。尝试类似于:

NineDoubles = c_double * 9

class RETARRAY(Structure):
    _fields_= [("data", POINTER(c_double)),
              ("row", c_int),
              ("col", c_int)]

#Initializing the matrix 
data = NineDoubles()
retArr = RETARRAY()
retArr.data = data

dll.mlfAddmatrixW(pointer(retArr))

相关问题 更多 >