在 Python 中创建二维 c_types 数组并在 C 函数中使用它

Create 2D c_types array in Python and use it in a C function

我在 Google 上搜索过,但找不到解决方案。由于 c_types.

,我只想创建一个引用现有 python 数组的 2D 指针数组,以便在 C 函数中发送它

tab 是现有的一维数组,并且有效:

arr = (c_int * 1000000)(*tab)
Basic.Basic_c.quicksort.restype = POINTER(c_int )
c = Basic.Basic_c.quicksort(arr)

二维数组:

Matrix = [[0 for x in range(8)] for y in range(5)];
arr = ((c_int * 8)*5)(*Matrix)

没有成功,创建一个错误:

TypeError: expected c_long_Array_8 instance, got list

我找不到解决方案。

您可以使用元组的元组,而不是使用二维列表。因此,在创建矩阵后,将其转换为元组,如下所示。

Matrix = [[0 for x in range(8)] for y in range(5)];
Matrix = tuple(map(tuple, Matrix))
arr = ((c_int * 8)*5)(*Matrix)