我试图从python2.7中的C库调用函数。到目前为止,我发现的大多数教程或信息都让我很困惑。在
C函数接受3个double(标记为h,k,l)和2个指向一个double(*p,*q)的指针来迭代求解这两个double,为简单起见,初始化为0.0。函数不返回任何值,它只使用指针修改p和q的值
我现在的代码是:import ctypes
path = '/foo/bar.so'
_lib = ctypes.CDLL(path)
_lib.solve.argtypes = (ctypes.c_double, ctypes.c_double, ctypes.c_double, ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.c_double))
def py_solve(h, k, l):
global _lib
p, q = ctypes.c_double(0.0), ctypes.c_double(0.0)
_lib.solve(ctypes.c_double(h), ctypes.c_double(k), ctypes.c_double(l), ctypes.POINTER(p), ctypes.POINTER(q))
return float(p), float(q)
我得到:
^{pr2}$
在线通话_lib.求解(…)在我的py_solve函数中。使用ctypes的byref()函数可能会更简单一些,但我不确定如何做到这一点。谢谢任何帮助。在