Opened 11 years ago
Closed 9 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: |
Description
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
Reporter: | changed from Răzvan Rotaru to Răzvan Rotaru |
---|
comment:2 Changed 10 years ago by
Milestone: | someday → 4.10.0 |
---|
comment:3 Changed 9 years ago by
Milestone: | 4.10.0 → 4.11.0 |
---|
comment:5 Changed 9 years ago by
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
hm, it looks like this bug has been fixed by 870c3538c04b3c6294bf850234c32e29eeb030fa. I've pinged the original bug reporter about it.
comment:7 Changed 9 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Never heard back, I'll just assume we fixed it.
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
andlib
in the Scheme code, to match the way we install binaries into the system.