在Python中使用ctypes将指针传递给指向C函数的struct指针

时间:2016-09-15 03:59:45

标签: python c pointers ctypes

在C库中有:

typedef struct A *  B;
int create_b(B* b);

并使用ctypes我需要Python等价于:

B b;
create_b(&b)

结构A在Python中实现为class A(ctypes.Structure)

所以,我试过了:

b = ctypes.POINTER(A)
lib.create_b(ctypes.byref(b))

但它不起作用。有许多类似的问题,但我没有尝试过帮助。

1 个答案:

答案 0 :(得分:0)

这一行

b = ctypes.POINTER(A)

只是设置b来引用相同的类型ctypes.POINTER(A),其中真正需要的是使用该类型构造的变量。该行最后没有括号:

b = ctypes.POINTER(A)()