2024-04-19 09:57:28 发布
网友
我有一个C函数:
void func(int n, int m) { int Array[n][m]; make_magic(Array); }
制作二维阵列并进行处理。我在python3.5中使用这个func和如下ctypes:
from ctypes import * magic = CDLL('lib_name') magic.func(n,m)
那么如何在python中获取这个2D数组呢?你知道吗
您想在Python中使用生成的数组,对吗?你知道吗
采用C代码通过接收到的指针“返回”数组。你知道吗
void func(int n, int m, int *Array) { Array[0][0] = 42; // fill array accordingly make_magic(Array); }
按NumPy初始化数组,按函数创建并处理它,然后按NumPy进行后期处理:
from ctypes import * import numpy n, m = 5, 10 array = numpy.zeros((n,m), dtype=numpy.int) magic = CDLL('lib_name') magic.func(n,m, array.ctypes.data)
您必须处理返回的c数据类型,但是在c函数中添加return语句。然后你就可以:
return
array = magic.func(n,m)
或者,可以使用swig围绕c代码创建python包装器模块。然后您就可以直接在python中调用它的任何函数。你知道吗
您想在Python中使用生成的数组,对吗?你知道吗
采用C代码通过接收到的指针“返回”数组。你知道吗
按NumPy初始化数组,按函数创建并处理它,然后按NumPy进行后期处理:
您必须处理返回的c数据类型,但是在c函数中添加
return
语句。然后你就可以:或者,可以使用swig围绕c代码创建python包装器模块。然后您就可以直接在python中调用它的任何函数。你知道吗
相关问题 更多 >
编程相关推荐