使用可变长度arg列表创建绑定到C函数的ctypes

时间:2011-05-23 10:48:17

标签: python c ctypes

假设我有一个带有可变长度参数列表的C函数:

int some_func(int arg1 , ... );

是否可以(轻松?)使用ctypes从python调用此函数?

更新:

实施了塞德里克的建议,其效果就像魅力一样:

libc = ctypes.CDLL( "/lib64/libc.so.6" , ctypes.RTLD_GLOBAL )
printf = getattr( libc , "printf")
printf("String1:%s int:%d String2:%s double:%lg\n" , "Hello" , 10 , "World" , ctypes.c_double( 3.1415 ))

使用ctypes.c_double()函数作为唯一的小麻烦。所以 - 总而言之,这比我更容易;但是我觉得用fa_args提高fxxx的可能性仍然是一样的。

1 个答案:

答案 0 :(得分:2)

假设你可以绑定libc printf function,这是va_args使用的一个很好的例子,我想你将能够用任何函数创建一个绑定。