Building an Extension Using Visual C++
One of Python’s most powerful features is how well it integrates with extensions written in C. If you have a library or toolkit available for C or C++, it is almost certain you can expose this library to Python using an extension module.
Alternatively, you may have a program with special requirements, such as crunching huge complex datasets, and your program could benefit immensely if you could speed up one small, but important part of the application. Writing this small speed-critical part in C and calling it from your Python program is an attractive solution many people adopt.
For whatever reason you need to do this, we provide here a short discussion of extension modules and building the modules on Windows.
For this example, we use a simple extension module from the Python
tutorial. This creates a module called spam
and
exposes a function called system()
, which runs a
DOS command. This is obviously a contrived example as this same
functionality can be obtained from the Python function
os.system()
; indeed, you would expect to find
almost identical code implementing os.system()
.
The source code is as follows:
/* spammodule.c - pasted from Python extending/embedding manual*/ # include "Python.h" static PyObject *SpamError; static PyObject *spam_system(self, args) PyObject *self; PyObject *args; { char *command; int sts; if (!PyArg_ParseTuple(args, "s", &command)) return NULL; sts = system(command); return Py_BuildValue("i", sts); } static PyMethodDef ...
Get Python Programming On Win32 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.