If
dll-exports
is
:no
, the delivered image is an executable.
Otherwise
dll-exports
should be a list (potentially
nil
) of strings naming Lisp functions defined by
fli:define-foreign-callable
. The effect is to deliver the image as a dynamic library, and to export all the names in
dll-exports
so that they can be found by
GetProcAddress
(on Microsoft Windows) or
dlsym
(Linux/FreeBSD/Macintosh/Unix). The exported symbol is actually a stub that first ensures that LispWorks has finished initializing, and then enters the Lisp code.
To deliver a dynamic library on Linux/Macintosh/FreeBSD, the build machine must have a C compiler installed. This is typically
gcc
(which is available on the Macintosh by installing Xcode).
On Mac OS X the default behavior is to generate an object of type "Mach-O dynamically linked shared library". See :image-type for information about controlling the format of the object file.
You can use
LoadLibrary
from the main application to load the DLL and
GetProcAddress
to find the address of the external names.
There is an example DLL delivery script in Delivering a dynamic library.
For more information about the behavior of LispWorks DLLs (dynamic libraries) see the chapter "LispWorks as a dynamic library" in the LispWorks User Guide .