Dr.*_*ain 4 windows sbcl common-lisp blas cffi
我正在尝试使用来自 SBCL 的 BLAS/LAPACK 库(特别是试图让LLA包运行)。我在加载 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")
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,这并不可怕,但我不明白为什么 CFFI:LOAD-FOREIGN-LIBRARY 无法找到并加载依赖项本身。难道我做错了什么?
在您的情况下,可能不是 CFFI 而是Windows DLL 搜索规则导致了这种情况。
与cygblas-0.dll在c:\cygwin64\lib\lapack目录中一样,它可能具有的任何依赖项都从同一目录、当前目录、Windows 目录和PATH.
如果您c:\cygwin64\bin的路径中没有,则无法找到 DLL。cffi::*foreing-library-directories*不影响 Windows 功能;CFFI 只是LoadLibrary使用 DLL 的完整路径执行调用。
作为解决方案,我建议您配置您PATH的c:\cygwin64\bin目录以包含该目录,这在任何情况下都是一个好主意。或者,您可以PATH在调用 之前修改代码中的环境变量load-foreign-library,但其完成方式取决于实现。
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |