How can I make a separate folder for my application's DLLs?

后端 未结 3 1258
独厮守ぢ
独厮守ぢ 2021-01-21 18:44

I have successfully divided a large MFC project into a couple of smaller DLL projects. Now I want to have a separate folder called \"DLL\" in my application\'s folder, where all

相关标签:
3条回答
  • 2021-01-21 19:10

    DLL redirection is a fairly new feature (Windows 2000 IIRC). Name your DLL directory <myapp>.exe.local, and Windows will check it first for anything loaded via LoadLibrary(Ex). This includes delay-loaded DLLs.

    0 讨论(0)
  • 2021-01-21 19:24

    If you use LoadLibrary, you simply have to explicitly specify the full path of the DLLs you load.

    If the DLLs are implicitly linked, you can do this in two ways.

    • Have the installer modify the PATH variable. This is intrusive and "bad form"
    • Write a "loader" application that locally modifies the path variable, then executes the real executable.

    The best solution would be to simply put the DLLs in the same directory as the executable.

    0 讨论(0)
  • 2021-01-21 19:29

    EDIT: As pointed out by Eric this doesn't work. Sorry.

    See Dynamic-Link Library Search Order. In short you can do so using registry keys under the "HKEY_LOCAL_MACHINE\SORTWARE\Microsoft\Windows\CurrentVersion\App Paths" key. A reg file like the following shows how:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
    @="C:\\Program Files\\MyCompany\\MyApp\\MyApp.exe"
    "Path"="C:\\Program Files\\MyCompany\\MyApp\\MyDLLs"
    
    0 讨论(0)
提交回复
热议问题