ctypes:如何通过指针传递参数并在python中读取值

时间:2016-02-07 17:32:35

标签: python binding ctypes

我有一个c函数,签名是:

bool f(double *a, double *b);

此函数在共享库lib.so

中编译

我正在尝试使用ctypes包装此函数。

这是我到目前为止所做的:

import ctypes 
lib = ctypes.cdll.LoadLibrary('lib.so')                                                                                      
lib.f.argtypes = (ctypes.POINTER(ctypes.c_double),ctypes.POINTER(ctypes.c_double))                                                                                                   

def f(a):                                                                                                                                                                                     
    global lib                                                                                                                                                                                        
    ctype_a = ctypes.c_double * len(a)                                                                                                                                                                    
    ctype_b = ctypes.c_double * 3                                                                                                                                                                           
    success = lib.f(ctype_a(*a), ctype_b(*[0,0,0]))                                                                                                                
    return success,ctype_b                                                                                                                                                                              

这似乎工作得很好,除了ctype_b属于PyCArrayType类,我不知道如何从中读取数据。

0 个答案:

没有答案