Python’s ctypes Foreign Function Library
There is another way to get at the functions exposed by a DLL: ctypes, Python’s library for accessing external DLL objects. This section provides a general overview of ctypes.
The ctypes library gives Python programs the ability to directly access the functions within an external DLL without the need to create interface code in C. ctypes is part of the standard distribution with Python 2.5 and later, and it supports both Linux and Windows environments, with the usual caveats concerning the fundamental differences between the two platforms.
Loading External DLLs with ctypes
ctypes exports three primary interface classes: cdll, windll, and oledll. cdll
is used for both Linux and Windows and supports library modules that use
the cdecl calling convention. The
windll class supports Windows
libraries that use the stdcall
convention. oledll also uses the
stdcall convention, but it assumes
that the library functions return an HRESULT error code. cdecl is the default for C programs, so most
library objects on Linux will use this convention. On a Windows system
you should check the appropriate Windows technical documentation to see
what the various library objects use as their calling convention.
Using ctypes is straightforward. Here is what happens when the Windows C runtime library, msvcrt (Microsoft Visual C Run-Time), is accessed using ctypes:
>>>from ctypes import *>>>msvcrt = cdll.msvcrt>>>msvcrt<CDLL 'msvcrt', handle 78000000 at 97b0f0> >>> ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access