【发布时间】:2015-08-21 02:57:48
【问题描述】:
我有一个C函数void get_data(int &len, double* data),它为数据动态分配内存(大小事先不知道)并返回一个指向数据的指针。我想使用 ctypes 从 python 调用它。
double* data = get_data(int &len) 的版本运行良好,但我需要通过参数传递指针的版本,因为我有多个数据向量。
我尝试了许多不同的方法,但没有任何效果:
fun = cfun.get_data
fun.argtypes = [ct.c_int, ct.POINTER(ct.c_int)]
fun.restype = None
len = ct.c_int()
data_ptr = ct.POINTER(ct.c_double)()
fun(len, data_ptr)
bool(data_ptr) -- NULL -- 它不可变,所以保持为 NULL
在 C 函数为其分配新值之后。
我试过ct.byref(data_ptr),等等。但一直无法获得
数据出来。
非常感谢!
【问题讨论】: