[cffi-devel] trouble loading dll via cff:use-foreign-library

Mirko Vukovic mirko.vukovic at gmail.com
Wed Feb 20 03:13:43 UTC 2008


On Tue, Feb 19, 2008 at 9:54 AM, Reini Urban <rurban at x-ray.at> wrote:
> 2008/2/18, Mirko Vukovic <mirko.vukovic at gmail.com>:
>
>
> > On Mon, Feb 18, 2008 at 2:18 PM, Luís Oliveira <luismbo at gmail.com> wrote:
>  > > On 18/02/2008, Mirko Vukovic <mirko.vukovic at gmail.com> wrote:
>  > >
>  > > > CFFI-USER> (setf *target* #p"/bin/cyggsl-0.dll")
>  > >  > #P"/bin/cyggsl-0.dll"
>  > >  > CFFI-USER> (probe-file *target*)
>  > >  > #P"/bin/cyggsl-0.dll"
>  > >  > CFFI-USER> (cffi:load-foreign-library *target*)
>  > >  >
>  > >  > and the error message:
>  > >  >
>  > >  > Unable to load foreign library (NIL).
>  > >  >   FFI::FOREIGN-LIBRARY: Cannot open library "/bin/cyggsl-0.dll": "No
>  > >  > such file or directory"
>  > >  >    [Condition of type LOAD-FOREIGN-LIBRARY-ERROR]
>  > >
>  > >  I'm out of ideas, sorry. It works for me on Cygwin:
>  > >
>  > >  [3]> (cffi:load-foreign-library "/bin/cyggsl-0.dll")
>  > >  #<CFFI::FOREIGN-LIBRARY #x1030C799>
>  > >
>  > >  [4]> (lisp-implementation-version)
>  > >  "2.44 (2008-02-02) (built on reini [192.168.1.7])"
>  > >  [5]> (software-version)
>  > >  "GNU C 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)"
>  > >
>  > >  --
>  > >
>  > >
>  > > Luís Oliveira
>  > >  http://student.dei.uc.pt/~lmoliv/
>  > >
>  >
>  > Well, in one sense, that is good news: it can work.  I just need to
>  > look harder to see where it is failing on my machine.
>  >
>  > Can you just tell me what are the permission settings of the dll's
>  > that you have? (I'm grasping at straws here)
>
>  What does $ cygcheck cyggsl-0.dll
>  return for you? This should be your problem.
>  As I said I suspect lapack is not in your path, or there is some
>  problem loading the blas dll.
>
>  $ cygcheck cyggsl-0.dll
>  Found: d:\cygwin\bin\cyggsl-0.dll
>  d:\cygwin\bin\cyggsl-0.dll
>   d:\cygwin\lib\lapack\cygblas.dll
>     d:\cygwin\bin\cygwin1.dll
>
>       C:\WINDOWS\system32\ADVAPI32.DLL
>
>         C:\WINDOWS\system32\ntdll.dll
>
>         C:\WINDOWS\system32\KERNEL32.dll
>
>         C:\WINDOWS\system32\RPCRT4.dll
>
>
>           C:\WINDOWS\system32\Secur32.dll
>  --
>  Reini Urban
>  http://phpwiki.org/              http://murbreak.at/
>  http://spacemovie.mur.at/   http://helsinki.at/
>

Reini, I get the identical output to cygcheck as you.  I don't know if
I emailed to you, but I did write a little C program and linked it
against the cyggsl-0.dll, and it worked.

I'm a bit puzzled by the error message: it is identical to the one if
I give it a non-existant file name.  Here is with an existing
cyggsl-0.dll:
Unable to load foreign library (NIL).
  FFI::FOREIGN-LIBRARY: Cannot open library "/bin/cyggsl-0.dll": "No
such file or directory"
   [Condition of type LOAD-FOREIGN-LIBRARY-ERROR]

And here when loading cyggsl-0.dlla which does not exist:
Unable to load foreign library (NIL).
  FFI::FOREIGN-LIBRARY: Cannot open library "/bin/cyggsl-0.dlla": "No
such file or directory"
   [Condition of type LOAD-FOREIGN-LIBRARY-ERROR]

To my untrained eyes, it is almost that it really does not see the file.

I think that I need to play a bit in the debugger stack.  I see that
the -helper and -path functions are involved.  Time to finally learn
how to use slime's debugging features.

Thanks for staying with me this long :-)

Mirko

BTW, I keep replying to both you and and Luis directly, as well as to
the cffi-devel.  If direct emails are annoying, let me know.



More information about the cffi-devel mailing list