Windows CFFI未加载依赖库?

Windows CFFI未加载依赖库?,windows,common-lisp,sbcl,blas,cffi,Windows,Common Lisp,Sbcl,Blas,Cffi,我正在尝试使用SBCL中的BLAS/LAPACK库(特别是尝试运行包)。我在加载BLAS共享库时遇到了很多麻烦;最终我发现它无法加载它的依赖库。最终,我能够通过手动加载BLAS的所有依赖项来加载BLAS: (setq cffi::*foreign-library-directories* '("C:/cygwin64/bin/" "C:/cygwin64/lib/lapack/")) (CFFI:LOAD-FOREIGN-LIBRARY "CYGWIN1.DLL") (CFFI:LOAD-FOR

我正在尝试使用SBCL中的BLAS/LAPACK库(特别是尝试运行包)。我在加载BLAS共享库时遇到了很多麻烦;最终我发现它无法加载它的依赖库。最终,我能够通过手动加载BLAS的所有依赖项来加载BLAS:

(setq cffi::*foreign-library-directories* '("C:/cygwin64/bin/" "C:/cygwin64/lib/lapack/"))
(CFFI:LOAD-FOREIGN-LIBRARY "CYGWIN1.DLL")
(CFFI:LOAD-FOREIGN-LIBRARY "CYGGCCC_S-SEH-1.DLL")
[..etc..]
(CFFI:LOAD-FOREIGN-LIBRARY "CYGBLAS-0.dll")

作为一种解决方法,这并不可怕,但我不理解为什么CFFI:LOAD-FOREIGN-LIBRARY无法找到并加载依赖项本身。我做错什么了吗?

在你的情况下,可能不是CFFI,但这是造成这种情况的原因

由于
cygblas-0.dll
位于
c:\cygwin64\lib\lapack
目录中,因此可以从同一目录、当前目录、Windows目录和
路径中搜索它可能具有的任何依赖项

如果路径中没有
c:\cygwin64\bin
,则无法找到DLL<代码>cffi::*foreing library directories*
不影响Windows功能;CFFI只需使用DLL的完整路径执行对的调用


作为解决方案,我建议您将
路径
配置为包含
c:\cygwin64\bin
目录,这在任何情况下都是一个好主意。或者,您可以在调用
加载外部库
之前修改代码中的
路径
环境变量,但是。

感谢您的响应。我假设将目录添加到cffi:*外部库目录*会将它们添加到加载搜索路径,但如果不是这样,则可以解释问题。