【问题标题】:Create 2D c_types array in Python and use it in a C function在 Python 中创建 2D c_types 数组并在 C 函数中使用它
【发布时间】:2019-10-27 21:51:53
【问题描述】:

我在 Google 上进行了搜索,但找不到解决方案。我只想创建一个 2D 指针数组来引用现有的 python 数组,以便通过 c_types 在 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

我找不到解决办法。

【问题讨论】:

    标签: python c arrays ctypes


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多