我试图通过ctypes
从python脚本调用C函数,但我做错了。我写了一个最小的例子来展示我正在做的事情:
#include <stdio.h>
float distance(float ab[]){
return fabs(ab[0]-ab[1]);
}
我将其保存为c_library.c
,然后使用cc -fPIC -shared -o c_library.so c_library.c
进行编译。
import ctypes
_c = ctypes.CDLL('c_library.so')
_c.distance.argtypes = [ctypes.POINTER(ctypes.c_float)]
def distance(ab):
array_type = ctypes.c_float * 2
return float(_c.distance(array_type(*ab)))
print(distance(np.array([1.0,3.0])))
当我执行它时,我得到0.0
作为输出。我做错了什么?