2011-02-17 38 views
16

例如,這將是很好能夠做到這一點:是否有一個原因,爲什麼Python的ctypes.CDLL不能自動生成C頭文件的restype和argtypes?

from ctypes import CDLL 
mylib = CDLL('/my/path/mylib.so',header='/some/path/mylib.h') 

,而不是

from ctypes import * 
mylib = CDLL('/my/path/mylib.so') 
mylib.f.restype = c_double 
mylib.f.argtypes = [c_double, c_double] 
mylib.g.restype = c_int 
mylib.g.argtypes = [c_double, c_int] 

我與蟒蛇的經驗表明,無論是東西非常接近這個已經被我做只是無法找到它,或者有一個不合理的理由。是這兩種情況?

回答

11

我問自己同樣的問題之前,我走過這條道路太遠,我跑進ctypesgen:

​​

它會處理這一切給你,雖然你將需要做前期學習很少。我們使用ctypesgen爲Subversion綁定生成一個版本的Python綁定。它工作得很好。

+4

對我來說,能夠直接導入標題看起來更加pythonic,而不必生成python文件,然後導入它們。 – lvella 2013-03-20 21:40:02

相關問題