5

我有一些 C 代码,我试图从 python 中的 ctypes 访问这些代码。一个特定的函数看起来像这样:

float *foo(void) {
    static float bar[2];
    // Populate bar
    return bar;
}

我知道这不是编写 C 的理想方式,但在这种情况下它可以完成工作。我正在努力编写 python 来获取响应中包含的两个浮点数。我对作为单个变量的返回值很好,但我无法从 ctypes 文档中解决如何处理指向数组的指针。

有任何想法吗?

4

1 回答 1

9

将 restypes 指定为[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])
于 2013-08-04T15:39:35.167 回答