Python C interoperability
I wish to wrap an existing C (pure C that is. No C++) library into Python so that I can cal开发者_StackOverflowl it from Python scripts. Which approach among the various available (C Api, SWIG etc.) would be the most suitable?
go with Ctypes, it is part of standard distribution and works very well. basically you can wrap C structures and types in python classes, as well as functions. Some types and functionality is already provided by library.
ctypes
couple caveats though: passing triple pointers to C routines is not obvious (if you have to), and I could not get it to work with static libraries on Linux, DLL and shared objects are fine.
SWIG is great for doing this. Here is a sample tutorial: http://www.swig.org/Doc1.3/Python.html.
Since your code is "pure" C you might consider using Pyrex/Cython. This is not a voting issue and Cython has already been mentioned. I am just clarifying why it is a better choice for pure C.
精彩评论