Есть ли причина, по которой Python ctypes.CDLL не может автоматически генерировать restype и argtypes из файлов заголовков C?
Например, было бы неплохо иметь возможность сделать это:
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]
Мой опыт работы с python предполагает, что либо что-то очень близкое к этому уже сделано, и я просто не смог его найти, или что есть хорошая причина не делать этого. Есть ли в этом случае?
Ответы
Ответ 1
Я задал себе тот же вопрос, и, прежде чем я отправился по этой дороге слишком далеко, я столкнулся с ctypesgen:
http://code.google.com/p/ctypesgen/
Он будет обрабатывать все это для вас, хотя вам нужно будет немного научиться впереди. Мы используем ctypesgen для генерации одной версии привязок Python для привязок Subversion. Он работает очень хорошо.