Skip to content

GHC on windows does not resolve DLL dependencies

GHC does not correctly tell the Windows Loader how to handle dependencies to dll's that are not on the standard windows load path:

  1. The directory from which the application loaded.
  2. The current directory.
  3. The system directory. Use the GetSystemDirectory function to get the path of this directory.
  4. The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
  5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
  6. The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.

So what this means is given two DLLs A and B and B depending on A. If we put both DLLs into a new folder bin and then call GHC with:

ghc -L$(PWD)/bin -lB

the loading will fail as the Windows loader will try to load the dependency of B and fail since it cannot find A.

Trac metadata
Trac field Value
Version 7.10.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System (Linker)
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information