PyMaemo/Accessing APIs without Python bindings
bruno_araujo (Talk | contribs) |
|||
Line 1: | Line 1: | ||
+ | <b style="color:red">This is an on-going document, and will be linked on the PyMaemo main page once finished</b> | ||
+ | |||
== Introduction == | == Introduction == | ||
- | + | There are many libraries written in C that do not have native Python bindings yet. In Maemo, one of such libraries is libabook, used to manipulate the address book on Maemo devices. | |
- | + | While a full binding is still very useful, in most cases you need to use just a couple of functions and data structures to get your work done. Instead of waiting for a binding to be implemented, you can use Python's "ctypes" module, which allows to directly call functions and access data structures from C libraries. | |
- | == | + | This article will explain how to do call C library functions using ctypes, using libabook as an example. Most of the code snippets were based on code found on the "Hermes"<ref> application |
+ | |||
+ | This page is not meant to be a complete <code>ctypes</code> guide; for that, be sure to read the documentation at http://docs.python.org/library/ctypes.html. | ||
+ | |||
+ | == Basic usage == | ||
Let's say you want to use libc's printf, for some reason. All you need in python is: | Let's say you want to use libc's printf, for some reason. All you need in python is: | ||
Line 42: | Line 48: | ||
>>> libc.printf("a integer: %d, a double: %f\n", 42, ctypes.c_double(3.14)) | >>> libc.printf("a integer: %d, a double: %f\n", 42, ctypes.c_double(3.14)) | ||
a integer: 42, a double: 3.140000 | a integer: 42, a double: 3.140000 | ||
+ | |||
+ | == References == | ||
+ | |||
+ | <references/> |
Revision as of 15:45, 29 January 2010
This is an on-going document, and will be linked on the PyMaemo main page once finished
Introduction
There are many libraries written in C that do not have native Python bindings yet. In Maemo, one of such libraries is libabook, used to manipulate the address book on Maemo devices.
While a full binding is still very useful, in most cases you need to use just a couple of functions and data structures to get your work done. Instead of waiting for a binding to be implemented, you can use Python's "ctypes" module, which allows to directly call functions and access data structures from C libraries.
This article will explain how to do call C library functions using ctypes, using libabook as an example. Most of the code snippets were based on code found on the "Hermes"[1]
Cite error:
<ref>
tags exist, but no <references/>
tag was found