To deliver a LispWorks runtime as a dynamic library supply a list value for dll-exports when calling deliver.
To save a LispWorks image as a dynamic library supply a list value for dll-exports when calling save-image.
Additionally on Linux, x86/x64 Solaris, Macintosh and FreeBSD platforms, you can supply a list value for dll-added-files to deliver or save a dynamic library.
Note: a LispWorks dynamic library is licensed in the same way as a LispWorks executable.
When LispWorks is a dynamic library the functions described in 52 Dynamic library C functions are automatically available. They allow the loading process control over relocation and unloading of the library.
dll-exports specifies application-defined exported functions in a LispWorks dynamic library.
Exports can also be provided in the files named in dll-added-files, on Linux, x86/x64 Solaris, Macintosh and FreeBSD platforms.
This script saves an image hello.dll which is a Windows DLL:
-------------------- hello.lisp -------------------------
(in-package "CL-USER")
(load-all-patches)
;; The signature of this function is suitable for use with
;; rundll32.exe.
(fli:define-foreign-callable ("Hello"
:calling-convention :stdcall)
((hwnd w:hwnd)
(hinst w:hinstance)
(string :pointer)
(cmd-show :int))
(capi:display-message "Hello world"))
(save-image "hello"
:dll-exports '("Hello")
:environment nil)
---------------------------------------------------------
Run the script by:
lispworks-8-0-0-x86-win32.exe -build hello.lisp
on the command line, or use the Application Builder tool.
(See 13.3 Saving a LispWorks image for more information about how to save an image.)
You can test the DLL by running:
rundll32 hello.dll,Hello
on the command line.
To see the dialog, you may need to dismiss the LispWorks splashscreen first.
LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:20