From [1] I see the following code example
(define-foreign-library libcurl
  (:unix (:or "libcurl.so.3" "libcurl.so"))
  (t (:default "libcurl")))
with the comment "the define-foreign-library clause (t (:default "libcurl")) [...] will adapt to various operating systems".

I'm wondering exactly how smart is this automatic handling?

On Windows, for example, the conventions are not always followed so closely, and as a result I keep adding more special cases to my define-foreign-library clauses when users complain they can't load the libraries.

For example, libpng might be png.dll or libpng.dll or libpng12.dll or libpng12-0.dll or libpng15-15.dll.

Will I be required to maintain a list of all possible names for the rest of eternity or is there some better way to manage this situation?

Thanks.

[1]: http://common-lisp.net/project/cffi/manual/cffi-manual.html#Tutorial_002dLoading

--
Elliott Slaughter

"Don't worry about what anybody else is going to do. The best way to predict the future is to invent it." - Alan Kay