На windows можно ли заставить DLL искать зависимости в другой папке без использования переменной среды PATH? - PullRequest
0 голосов
/ 09 июля 2020

На linux Я могу установить RPATH общей библиотеки на $ORIGIN:$ORIGIN../lib. Это указывает DLL искать в том же каталоге, что и общая библиотека, а также в папке ../lib. Я читал, что на windows вы просто добавляете абсолютный путь к ../lib (например) к PATH. Есть ли альтернатива этому методу? Я хочу, чтобы моя dll смотрела в папку ../lib, но не хочу, чтобы она была на пути. Возможно ли это?

1 Ответ

0 голосов
/ 09 июля 2020

Если основная DLL динамически / с задержкой загружает зависимые библиотеки DLL, она может вызвать SetDllDirectory() (или лучше, AddDllDirectory()) перед их загрузкой.

Если основная DLL stati c -связана с зависимыми DLL, но EXE динамически загружает / задерживает основную DLL, то EXE может вызвать (Add|Set)DllDirectory() перед загрузкой основной DLL.

В противном случае , вам нужно будет:

  • обновить переменную среды %PATH%.

  • использовать манифест приложения, в котором указаны пути зависимых DLL.

  • использовать Перенаправление DLL .

...