在 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)
我在 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)