我有一个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类,我不知道如何从中读取数据。