Я пишу программу A.exe, которая использует LoadLibrary
для загрузки внешней DLL B.dll во время выполнения.
B.dll находится в указанном каталоге c рядом с A.exe , но не в том же каталоге, что и A.exe. A.exe знает, где его найти во время выполнения.
B.dll динамически связан (с помощью G CC, а не во время выполнения) с другой DLL, C .dll.
Во время выполнения все работает успешно, если они настроены так:
myapp/
. . . . A.exe
. . . . C.dll
. . . . myplugins/
. . . . . . . . . B.dll
Однако я бы хотел, чтобы все было настроено так:
myapp/
. . . . A.exe
. . . . myplugins/
. . . . . . . . . B.dll
. . . . . . . . . C.dll
В этой настройке LoadLibrary
завершается неудачно при загрузке B.dll
, потому что он не может найти свою зависимость C.dll
, поскольку он не находится в том же каталоге, что и исполняемый файл хоста.
Как заставить предпочтительную настройку работать без A.exe
или процесс сборки, который знает что-нибудь о C .dll? Идея состоит в том, что B.dll является плагином для A.exe, поэтому A.exe знает, где его найти. Однако он не должен знать ничего о C .dll. Только B.dll должен знать что-либо о C .dll.