lispnik/cd

Can't load cd.dll on CCL or SBCL

defunkydrummer opened this issue · 3 comments

Steps:

  1. load tecgraf libs using tecgraf-libs by Lispnik

  2. push download dir to cffi foreign library directories.

  3. quickload "cd"

Result:

Unable to load foreign library (LIB-CD).
  Error opening shared object "C:\\Users\\fegoavil010\\Documents\\instalados\\lisp-portacle\\portacle\\projects\\tecgraf-libs\\libs\\cd.dll":
 The specified module could not be found.
   [Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]

Restarts:
 0: [RETRY] Try loading the foreign library again.
 1: [USE-VALUE] Use another library instead.
 2: [TRY-RECOMPILING] Recompile cd-cffi and try loading it again
 3: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "cd-cffi" "cd-cffi">.
 4: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "cd-cffi" "cd-cffi"> as having been successful.
 5: [RETRY] Retry ASDF operation.
 --more--

Backtrace:
  0: (CFFI::FL-ERROR "Unable to load foreign library (~A).~%  ~A" CD-CFFI::LIB-CD "Error opening shared object \"C:\\\\Users\\\\fegoavil010\\\\Documents\\\\instalados\\\\lisp-portacle\\\\portacle\\\\projec..
  1: (CFFI::REPORT-SIMPLE-ERROR CD-CFFI::LIB-CD #<SIMPLE-ERROR "Error opening shared object ~S:~% ~A" {100597E343}>)
  2: ((FLET #:FUN768 :IN CFFI::LOAD-FOREIGN-LIBRARY-PATH) #<SIMPLE-ERROR "Error opening shared object ~S:~% ~A" {100597E343}>)
  3: ((FLET #:FUN763 :IN CFFI::LOAD-FOREIGN-LIBRARY-PATH) #<SIMPLE-ERROR "Error opening shared object ~S:~% ~A" {100597A713}>)
  4: (CFFI::LOAD-FOREIGN-LIBRARY-PATH CD-CFFI::LIB-CD "cd.dll" NIL)
  5: (CFFI::LOAD-FOREIGN-LIBRARY-HELPER CD-CFFI::LIB-CD "cd.dll" NIL)
  6: ((FLET CFFI::%DO-LOAD :IN CFFI::%DO-LOAD-FOREIGN-LIBRARY) #<CFFI:FOREIGN-LIBRARY LIB-CD> CD-CFFI::LIB-CD "cd.dll")
  7: (CFFI::%DO-LOAD-FOREIGN-LIBRARY CD-CFFI::LIB-CD NIL)
  8: (CFFI:LOAD-FOREIGN-LIBRARY CD-CFFI::LIB-CD :SEARCH-PATH NIL)
  9: (SB-FASL::LOAD-FASL-GROUP #S(SB-FASL::FASL-INPUT :STREAM #<SB-SYS:FD-STREAM for "file c:\\Users\\fegoavil010\\Documents\\instalados\\lisp-portacle\\portacle\\win\\asdf\\cache\\SBCL-1.3.10-Win32-X86-64..
 10: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file c:\\Users\\fegoavil010\\Documents\\instalados\\lisp-portacle\\portacle\\win\\asdf\\cache\\SBCL-1.3.10-Win32-X86-64\\c\\Users\\fegoavil010\\Documents..
 11: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file c:\\Users\\fegoavil010\\Documents\\instalados\\lisp-portacle\\portacle\\win\\asdf\\cache\\SBCL-1.3.10-Win32-X86-64\\c\\Users\\fegoavi..
 12: (LOAD #P"c:/Users/fegoavil010/Documents/instalados/lisp-portacle/portacle/win/asdf/cache/SBCL-1.3.10-Win32-X86-64/c/Users/fegoavil010/Documents/instalados/lisp-portacle/portacle/projects/cd-master/cd/..
 13: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {100595928B}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
 14: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cd-cffi" "cd-cffi">)
 15: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cd-cffi" "cd-cffi">) [fast-metho..
 16: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cd-cffi" "cd-cffi">) [fast-method]
 17: ((:METHOD ASDF/PLAN:PERFORM-PLAN (LIST)) ((#1=#<ASDF/LISP-ACTION:PREPARE-OP > . #2=#<ASDF/SYSTEM:SYSTEM "uiop">) (#<ASDF/LISP-ACTION:COMPILE-OP > . #2#) (#3=#<ASDF/LISP-ACTION:LOAD-OP > . #2#) (#1# . ..
 18: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
 19: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) ((#1=#<ASDF/LISP-ACTION:PREPARE-OP > . #2=#<ASDF/SYSTEM:SYSTEM "uiop">) (#<ASDF/LISP-ACTION:COMPILE-OP > . #2#) (#3=#<ASDF/LISP-ACTION:LOAD-OP > . #2#) (#..
 --more--

Same result with CCL 1.12.

Note that iup.dll loads perfectly.

Also note that i'm able to (open) the cd.dll as a file without problems.

"The specified module could not be found." comes straight from the Win32 API. I'll google more.

Ok, this is because the DLL depends on other DLLs that aren't found by the Windows system.
So I need to find which DLLs does cd.dll depends on.