I don't think that this is such a burden. This is how libs are loaded in lisp builder-sdl.
(cffi:define-foreign-library sdl |
(:darwin (:or (:framework "SDL") |
(:default "libSDL"))) |
(:windows "SDL.dll") |
(:unix (:or "libSDL-1.2.so.0.7.2" |
"libSDL-1.2.so.0" |
"libSDL-1.2.so" |
"libSDL.so" |
"libSDL"))) |
On Tue, Dec 31, 2013 at 6:58 PM, Elliott Slaughter
<elliottslaughter@gmail.com> wrote:
> 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?
Right now, it simply appends an extension like ".dll" or ".dylib". It
doesn't handle versions or anything like that.
> 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?
Yeah, that sucks. I'm not aware of a better general solution. In some
cases, you might get away with searching for "*png*.dll" then loading
that using load-foreign-library, but I suppose you need to be careful
where you search.
HTH,
--
Luís Oliveira
http://kerno.org/~luis/