Joerg, Jeremy,
at this time with the current cffi sdl file I created for a small
project I'm adding manually the following line
(load-foreign-library "libSDL.so")
after the (in-package #:sdl)
in your windows platform you should add your dll, not the so file.
I suspect you should add the dll to your DLL PATH to allow cffi to
find it. In unix I can write a fullpath to the library to make it work
in any directory but I don't know if it will work in windows.
Regards,
rogersm.
Hoehle, Joerg-Cyril wrote:
Hi,
Jeremy Smith wrote:
CFFI-based SDL
module does not work on Windows 98 under Clisp. I just tested it on my
Windows 98 laptop (P166 :-) and it says the same thing. "FFI:
FOREIGN-LIBRARY-FUNCTION: No dynamic object named 'SDL_Init' in library
:DEFAULT"
I've a different opinion from James :)
The one difference I see is that your CLISP code explicitly mentions the
library to look after. That is the most portable way and the way I recommend,
even for UNIX. It's precise, and you won't get hit by name clashes (e.g.
Yaroslav Kavenchuk found duplicate sprintf across MS-Windows .dlls, one
crashes, the other not... Which one you get depends on the order in which the
system opened libraries, AFAIK it's not even controlled by CLISP.)
CFFI does not provide such a mechanism. There has been some recent work in that area,
e.g. define-foreign-library and use-foreign-library. But it still seems (or my darcs copy
is too old) that CFFI is not at the point where it can say for each function, or at the
top of a file defining functions, "this/these belong/s to library XYZ".
Please correct me if I'm wrong and this is antinews.
W.r.t. CLISP:
o In MS-Windows >98, constantly using :library :default should work (clisp will
scan all open libraries, you bet this takes time).
o On Linux, CLISP was patched last year to make :library :default so that it
would scan all libraries (to help people (e.g. CFFI users) *and* to work around
bugs in other software, e.g. incomplete library dependencies).
o Doesn't Frank Buss got a patch to make MS-Windows-98 work (I lost track of
it)?
However, if MS-Windows-98 does not have means to inspect dlls for symbols (e.g.
psapi.dll), then I don't see how this can be patched. You can try to find a
psapi.dll for MS-windows98??
You could only modify CFFI to emit a (:library *my-library*) into the code from
defcfun and the above mentioned cffi:use-foreign-library to set that variable.
IMHO, the problem is with CFFI, not CLISP. Lispworks would also benefit from
using module names. My bet/hope is that this is just a matter of time and
volunteers to write code, and CFFI will behave nicely :-)
Modules and the like have already been discussed in this list, here and there.
But we need people like you to complain to make discussions progress to real
code!
Regards,
Jorg Hohle.
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel