Home Contents Index Summary Previous Next

5.3 Dynamic Linking of shared libraries

The interface defined in this section allows the user to load shared libraries (.so files on most Unix systems). This interface is portable to all machines providing the function dlopen(2) or an equivalent, normally from the library -ldl. These functions provide the basic interface layer. It is advised to use the predicates from section 5.4 in your application.

open_shared_object(+File, -Handle)
File is the name of a .so file (see your C programmers documentation on how to create a .so file). This file is attached to the current process and Handle is unified with a handle to the shared object. Equivalent to open_shared_object(File, [global], Handle). See also load_foreign_library/[1,2].

open_shared_object(+File, +Options, -Handle)
As open_shared_object/2, but allows for additional flags to be passed. Options is a list of atoms. now implies the symbols are resolved immediately rather than lazy (default). global implies symbols of the loaded object are visible while loading other shared objects (by default they are local). Note that these flags may not be supported by your operating system. Check the documentation of dlopen() or equivalent on your operating system.

close_shared_object(+Handle)
Detach the shared object identified by Handle.

call_shared_object_function(+Handle, +Function)
Call the named function in the loaded shared library. The function is called without arguments and the return-value is ignored. Normally this function installs foreign language predicates using calls to PL_register_foreign().