If SCM has been compiled with `dynl.c' then the additional
properties of load and ([SLIB]) require specified here are supported.
The require form is preferred.
require, then the object and library files associated with
feature will be dynamically-linked, and an unspecified value
returned. If feature is not found in *catalog*, then an
error is signaled.
(usr:lib "m") returns "/usr/lib/libm.a", the path of the C
math library.
(x:lib "X11") returns "/usr/X11/lib/libX11.sa", the path
of the X11 library.
load will also
dynamically load/link object files (produced by compile-file, for
instance). The object-suffix need not be given to load. For example,
(load (in-vicinity (implementation-vicinity) "sc2")) or (load (in-vicinity (implementation-vicinity) "sc2.o")) or (require 'rev2-procedures) or (require 'rev3-procedures)
will load/link `sc2.o' if it exists.
The lib1 ... pathnames specify additional libraries which may be needed for object files not produced by the Hobbit compiler. For instance, crs is linked on Linux by
(load (in-vicinity (implementation-vicinity) "crs.o")
(usr:lib "ncurses") (usr:lib "c"))
or (require 'curses)
Turtlegr graphics library is linked by:
(load (in-vicinity (implementation-vicinity) "turtlegr")
(usr:lib "X11") (usr:lib "c") (usr:lib "m"))
or (require 'turtle-graphics)
And the string regular expression (see Regular Expression Pattern Matching) package is linked by:
(load (in-vicinity (implementation-vicinity) "rgx") (usr:lib "c"))
or
(require 'regex)
The following functions comprise the low-level Scheme interface to
dynamic linking. See the file `Link.scm' in the SCM distribution
for an example of their use.
dyn:link
procedure links and loads filename into the current SCM session.
If successfull, dyn:link returns a link-token suitable for
passing as the second argument to dyn:call. If not successful,
#f is returned.
dyn:link. name should be the name of C function of no
arguments defined in the file named filename which was succesfully
dyn:linked in the current SCM session. The dyn:call
procedure calls the C function corresponding to name. If
successful, dyn:call returns #t; If not successful,
#f is returned.
dyn:call is used to call the init_... function after
loading SCM object files. The init_... function then makes the
identifiers defined in the file accessible as Scheme procedures.
dyn:link. name should be the name of C function of 2
arguments, (int argc, char **argv), defined in the file named
filename which was succesfully dyn:linked in the current
SCM session. The dyn:main-call procedure calls the C function
corresponding to name with argv style arguments, such as
are given to C main functions. If successful,
dyn:main-call returns the integer returned from the call to
name.
dyn:main-call can be used to call a main procedure from
SCM. For example, I link in and dyn:main-call a large C program,
the low level routines of which callback (see Callbacks) into SCM
(which emulates PCI hardware).
dyn:link. The dyn:unlink procedure removes the previously
loaded file from the current SCM session. If successful,
dyn:unlink returns #t; If not successful, #f is
returned.