首页 > 解决方案 > 在 Python 中将数据从数组转换为 C 结构

问题描述

我正在编写一个测试程序来评估一个用 MATLAB 编写并由 MATLAB Coder 转换为 C 代码的函数。这个函数需要复杂的输入,我想用 CFFI 从一个 python 数组中转换这个数据,然后调用这个函数。

如果我将生成的代码更改为接受一组实数值和一组虚数值,然后将它们组合起来,则该函数可以正常工作,但我想将输入数据作为一个参数传递。

lib = 'path/to/somedll.dll'
C = ffi.dlopen(lib)
some_function = C.some_function

ffi=cffi.FFI()
ffi.cdef("typedef float real32_T;")

ffi.cdef("""typedef struct {
real32_T re, im;
} creal32_T;""")

ffi.cdef("some_function(const creal32_T inputdata[10], ...);")

inputdata = ffi.new("const creal32_T [10]")

# What I would like to do:
for i in range(0, 10):
    inputdata[i] = ffi.cast("creal_32T", data_in[i])

some_function(inputdata, ...)

标签: pythoncastingmatlab-coder

解决方案


推荐阅读