有没有理由说Python的ctypes.CDLL无法从C头文件自动生成重定型和argtypes?

EHN*_*EHN 17 python

例如,能够这样做会很高兴:

from ctypes import CDLL
mylib = CDLL('/my/path/mylib.so',header='/some/path/mylib.h')
Run Code Online (Sandbox Code Playgroud)

代替

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]
Run Code Online (Sandbox Code Playgroud)

我对python的经验表明,已经完成了与此非常接近的事情并且我无法找到它,或者有充分的理由不这样做.这些都是这种情况吗?

Jer*_*ock 12

我问自己同样的问题,在我走过这条路太远之前,我遇到了ctypesgen:

http://code.google.com/p/ctypesgen/

虽然你需要先做一点学习,但它会为你处理所有这些.我们使用ctypesgen为Subversion绑定生成一个版本的Python绑定.它工作得很好.

  • 对我来说,能够直接导入头文件似乎更加pythonic,而不必生成python文件,然后导入它们. (4认同)