Call C functions in shared objects
==================================
This manual section was written by Moshe Zadka
<moshez@zadka.site.co.il>.
Call C functions in shared objects.
The `dl' module defines an interface to the `dlopen()' function, which
is the most common interface on UNIX platforms for handling dynamically
linked libraries. It allows the program to call arbitrary functions in
such a library.
*Note:* This module will not work unless
sizeof(int) == sizeof(long) == sizeof(char *)
If this is not the case, `SystemError' will be raised on import.
The `dl' module defines the following function:
`open(name[, mode` = RTLD_LAZY'])'
Open a shared object file, and return a handle. Mode signifies
late binding (`RTLD_LAZY') or immediate binding (`RTLD_NOW').
Default is `RTLD_LAZY'. Note that some systems do not support
`RTLD_NOW'.
Return value is a `dlobject'.
The `dl' module defines the following constants:
`RTLD_LAZY'
Useful as an argument to `open()'.
`RTLD_NOW'
Useful as an argument to `open()'. Note that on systems which do
not support immediate binding, this constant will not appear in
the module. For maximum portability, use `hasattr()' to determine
if the system supports immediate binding.
The `dl' module defines the following exception:
`error'
Exception raised when an error has occurred inside the dynamic
loading and linking routines.
Example:
>>> import dl, time
>>> a=dl.open('/lib/libc.so.6')
>>> a.call('time'), time.time()
(929723914, 929723914.498)
This example was tried on a Debian GNU/Linux system, and is a good
example of the fact that using this module is usually a bad alternative.