[Python-3000] Ctypes as cross-interpreter C calling interface
"Martin v. Löwis"
martin at v.loewis.de
Sun Aug 20 23:10:41 CEST 2006
Paul Prescod schrieb:
> Thanks for everyone who contributed. It seems that the emerging
> consensus (bar a security question from Guido) is that ctypes it the way
> forward for calling C code in Python 3000.
I don't think that can ever work (so I don't participate in that
consensus). There are too many issues with C that make ctypes not
general enough.
a) it requires code to be packaged in a DLL; static libraries
are not supported (conceptually)
b) it requires you to know the layout of data structures, or
atleast to duplicate declarations in Python. As the layout
of the same structure may change over time or across
implementations (e.g. FILE in stdio), you can never get good
platform coverage.
c) A good deal of C API is through macros, for various usages
(symbolic constants, function inlining,
customization/configuration/conditional compilation)
d) No real support for C++ (where there are even more ABI
issues: (multiple) inheritance, vtables, constructors,
operator overload, templates, ...)
To access a C API, the only "right" way is to use a C compiler.
ctypes is for people who want to avoid using a C compiler at
all costs.
Regards,
Martin
More information about the Python-3000
mailing list