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