Opened 4 years ago

Closed 19 months ago

#1054 closed defect (fixed)

"csc -deploy" does not find libchicken.dll on windows

Reported by: roti Owned by:
Priority: minor Milestone: 4.11.0
Component: compiler Version: 4.8.x
Keywords: Cc:
Estimated difficulty:


When calling csc with "-deploy", an error occurs because libchicken.dll is not found (see example below). csc looks for the dll in %CHICKEN_PREFIX%\lib, but the file resides in %CHICKEN_PREFIX%\bin. In the example below, the environment variable CHICKEN_PREFIX is set to "C:\Program Files (x86)\Chicken Scheme".

D:\scheme>csc -deploy test.scm -o test
The system cannot find the file specified.

Error: shell command terminated with non-zero exit status 1: "copy /Y "C:\Program Files (x86)\Chicken Scheme\lib\libchic
ken.dll" "test""

After execution, the folder "d:\scheme\test" was created and test.exe copied to it, but not libchicken.dll.

Change History (7)

comment:1 Changed 4 years ago by mario

  • Reporter changed from rrotaru to roti

comment:2 Changed 3 years ago by sjamaan

  • Milestone changed from someday to 4.10.0

comment:3 Changed 2 years ago by sjamaan

  • Milestone changed from 4.10.0 to 4.11.0

comment:4 Changed 20 months ago by sjamaan

The GHC folks are also looking into this stupid problem: This blog post describes a nasty undocumented feature to allow absolute paths instead of plain DLL names, but it can't be scripted AFAICT. On the GHC wiki there's some more information on how to fix linking on Windows. The "side by side" assembly stuff sounds promising, but I haven't found any docs that are actually human-readable enough to figure out how to make use of this.

I've also read that there's application-specific DLL path support but that requires messing about with the Registry, which means installation/uninstallation is no longer simple.

So far the simplest solution seems to be to simply differentiate between bin and lib in the Scheme code, to match the way we install binaries into the system.

Last edited 20 months ago by sjamaan (previous) (diff)

comment:5 Changed 20 months ago by sjamaan

The MSDN documentation for assemblies seems to indicate that assemblies will only work from Windows 7 onwards (search for the string "privatePath", the description under the title "probing" explains a bit).

comment:6 Changed 20 months ago by sjamaan

hm, it looks like this bug has been fixed by 870c3538c04b3c6294bf850234c32e29eeb030fa. I've pinged the original bug reporter about it.

comment:7 Changed 19 months ago by sjamaan

  • Resolution set to fixed
  • Status changed from new to closed

Never heard back, I'll just assume we fixed it.

Note: See TracTickets for help on using tickets.