[cffi-devel] DEFINE-FOREIGN-LIBRARY Additions
James Bielman
jamesjb at jamesjb.com
Sat Jan 7 07:53:54 UTC 2006
After talking with ignas in #lisp about using this interface for GTK,
I came up with a patch to add the following features to
DEFINE-FOREIGN-LIBRARY:
- A CFFI feature expression of T can be used to define a default
clause.
- If a library name is of the format (:DEFAULT STRING) then
LOAD-FOREIGN-LIBRARY will append an OS-specific library suffix (.so,
dll, .dylib, etc) to STRING before trying to load it. (We will need
to extend this list as we test on more operating systems...) There
is no facility for specifying versions with :DEFAULT; if you need to
load a specific version, you must give the full library name.
If the library you want to link against is "libfoo.so" on Linux,
"libfoo.dylib" on Darwin, and "libfoo.dll" on Windows, then the
following should do the right thing:
(define-foreign-library foo
(t (:default "libfoo")))
I was reluctant to add any default behavior that tries to interpret
the foreign library name and add suffixes if not present. I think
explicitly requesting addition of the suffix keeps the design cleaner.
Luís, I put a patch file up if you'd like to look it over:
http://slacknet.com/~jamesjb/suffixes.patch
James
More information about the cffi-devel
mailing list