2

I am using a dll library for my c++ code using LoadLibrary.

HINSTANCE h_dll = LoadLibrary("library1.dll");

When I do this and load the functions, library1.dll seems to use a multiple of other dll files, say library2.dll and library3.dll. So for the program to work, I need to put all 3 dll files in the same directory as the exe file.

The problem happens when I try to put the dll files in a separate directory. I can just directly write the path for library1:

HINSTANCE h_dll = LoadLibrary("C:\\mydir\\library1.dll");

But this doesn't make library1.dll search for files inside C:\\mydir and I get error messages saying library2.dll and library3.dll couldn't be found. So for the program to work, I still need to put the other two library files with the exe.

Is there a way to specify the library path from modifying only the code itself and not the system search path? e.g. sending an argument while loading the library? Or is there a way to modify the dll library files so that it could be placed in separate directories? Or maybe I could create another dll to do these?

  • [SetDllDirectory](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setdlldirectoryw) – dewaffled Sep 05 '21 at 21:45
  • 1
    @dewaffled [AddDllDirectory()](https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-adddlldirectory) is preferred over `SetDllDirectory()` – Remy Lebeau Sep 05 '21 at 22:29

0 Answers0