Принудительная статическая загрузка dll из заданного каталога

В нашем приложении мы динамически загружаем файл dll, который опять же имеет статические привязки к другим dll.

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

Вопрос 1. Как лучше всего заставить динамически загружаемую библиотеку искать статически загруженные библиотеки в заданной папке?

Вопрос 2. Как предотвратить загрузку статических библиотек из папки приложения, если там осталась более старая версия библиотек?

(кстати, это приложение win32...)


person Vegar    schedule 10.12.2010    source источник


Ответы (1)


Для Q1 вы должны изучить SetDllDirectory. Это влияет на все последующие поиски DLL, при условии, что библиотеки DLL в папке приложения (например, ваши старые библиотеки DLL) по-прежнему имеют приоритет.

Затем сразу же дается ответ на вопрос 2: если вы этого не хотите, не используйте неявную загрузку DLL. Используйте LoadLibraryEx и используйте полный путь. Это единственный способ предотвратить поиск Windows.

person MSalters    schedule 10.12.2010
comment
LoadLibraryEx выглядит многообещающе. Спасибо. - person Vegar; 10.12.2010