ctypes - 调用库函数传递由其他库调用产生的结构

时间:2013-12-05 12:10:59

标签: python ctypes

共享库函数产生一个结构,我尝试从同一个lib传递给第二个函数:

struct rohc_comp* rohc_alloc_compressor(int a, int b, int c, int d)

void rohc_activate_profile( struct rohc_comp * comp, int p )

我不想在我的python代码中操作结构,但我需要正确的方法来存储refence,并在需要时传递它:

librc = CDLL("librohc_comp.so")
comp = librc.rohc_alloc_compressor(15,0,0,0)
librc.rohc_activate_profile(comp, 1)

当我将它作为一个非常虚拟的例子进行测试时,它起了作用,但是当我把它放在我的复杂类中时,它会导致分段错误。我应该将哪种ctype用于comp?

1 个答案:

答案 0 :(得分:0)

将其处理为void *,即设置

librc.rohc_alloc_compressor.restype = c_void_p
librc.rohc_activate_profile.argtypes = [c_void_p, c_int]