python调用c++的库传递二级指针

遇见的问题:需要从python向c++函数中传入二级指针的参数

char**P的问题:

c_char_datas = (ctypes.c_char_p * file_num)()
for j in range(file_num):
    c_char = (ctypes.c_char*6)()
    c_char.value = file_list[j].name.encode('utf-8')
    c_char_datas[j] = ctypes.c_char_p(c_char.value)

这样c_char_datas 就是P,传入函数就可以了,肯定有其他的方式可以解决,这里只记录自己使用的一种。

 

int**P的问题:

c_int_arrs = []
for j in range(file_num):
    value_num = len(file_value_arrs[j])
    one_int_arr = (ctypes.c_int*value_num)()
    for m in range(value_num):
        one_int_arr[m] = file_value_arrs[j][m]
    c_int_arrs.append(ctypes.cast(one_int_arr, ctypes.POINTER(ctypes.c_int)))
p_int_arr = (ctypes.POINTER(ctypes.c_int) * file_num)(*c_int_arrs)

这个p_int_arr就是P,目前有正确结果,但是不知道还有没有其他更好的方式,记录,自用。

你可能感兴趣的:(python)