2011-05-23 42 views
4

假設我有C函數與可變長度參數列表綁定到C函數:創建ctypes的可變長度ARG列表

int some_func(int arg1 , ...); 

是否有可能(簡單嗎?)來調用使用ctypes的蟒蛇這個功能呢?

更新:從塞德里克和

實施建議的工作般的魅力:

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()函數作爲唯一的小麻煩。所以 - 總而言之,這比我容易得多。不過我猜想用va_args修改fxxx的可能性仍然是一樣的。

回答

2

假設你可以綁定libc printf function,這是va_args使用的一個很好的例子,我想你可以用任何函數創建一個綁定。