Opened 11 years ago

Closed 8 years ago

#1054 closed defect (fixed)

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

Reported by: Răzvan Rotaru 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 11 years ago by Mario Domenech Goulart

Reporter: changed from Răzvan Rotaru to Răzvan Rotaru

comment:2 Changed 10 years ago by sjamaan

Milestone: someday4.10.0

comment:3 Changed 9 years ago by sjamaan


comment:4 Changed 9 years 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 9 years ago by sjamaan (previous) (diff)

comment:5 Changed 9 years 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 9 years 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 8 years ago by sjamaan

Resolution: fixed
Status: newclosed

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

Note: See TracTickets for help on using tickets.