我有一些C代码,我试图从python中的ctypes访问.一个特定的函数看起来像这样:
float *foo(void) {
static float bar[2];
// Populate bar
return bar;
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是写C的理想方法,但它在这种情况下完成了工作.我正在努力编写python来获取响应中包含的两个浮点数.我很好,返回值是单个变量,但我无法从ctypes文档中解决如何处理指向数组的指针.
有任何想法吗?
将重新定义指定为[POINTER][1](c_float):
import ctypes
libfoo = ctypes.cdll.LoadLibrary('./foo.so')
foo = libfoo.foo
foo.argtypes = ()
foo.restype = ctypes.POINTER(ctypes.c_float)
result = foo()
print(result[0], result[1])
Run Code Online (Sandbox Code Playgroud)