DLL search on windows

前端 未结 4 2000
独厮守ぢ
独厮守ぢ 2020-11-28 15:20

On linux, we have LIBRARY_PATH and LD_LIBRARY_PATH environment variables in order for programs to search for libraries. Do we have similar thing on

4条回答
  •  误落风尘
    2020-11-28 15:49

    Edit: As explained by Bob, this answer describes the Alternate Search Order, which is not what most applications would see. The full rules are quite complex. I don't think I can summarize them here. Instead, read the Microsoft docs - https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order

    My original answer was:

    This MSDN article explains the default search order. I quote:

    1. The directory specified by lpFileName.
    2. The system directory. Use the GetSystemDirectory function to get the path of this directory.
    3. The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
    4. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
    5. The current 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.

    In (1), if you statically linked against the DLL's stub library, I think "the directory specified by lpFileName" is the process's exe's path.

提交回复
热议问题