2011-02-17 13 views
16

Örneğin, bu yapabilmek için iyi olurdu:Python's ctypes.CDLL'nin C başlık dosyalarından otomatik olarak restype ve argtypes oluşturamaması için bir neden var mı?

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

yerine

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] 

piton Benim deneyim ile bu çok yakın bir şey ya zaten ve ben yapılmıştır düşündürmektedir sadece onu bulamadım ya da yapmamanın iyi bir sebebi var. Bunlardan biri de durum mu?

cevap

11

kendime aynı soruyu sordu ve ben çok uzakta o yola gitti önce ben ctypesgen koştu:

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

bir yapmak gerekir rağmen, sizin için tüm bu idare edecek

Biraz ön öğrenim. Subversion bağlamaları için Python bağlarının bir sürümünü oluşturmak için ctypesgen kullanıyoruz. Çok iyi çalışıyor.

+4

Bana göre, python dosyaları oluşturmak yerine, doğrudan başlıkları içe aktarabilmek ve daha sonra bunları içe aktarmak daha pythonic gibi görünüyor. – lvella

İlgili konular