Получить каталог DLL - PullRequest
       17

Получить каталог DLL

3 голосов
/ 07 апреля 2010

У меня есть вопрос о получении каталога DLL в системе Windows.

Ситуация такая:

У меня есть DLL и EXE-файл.EXE-файл должен загрузить DLL для запуска.Эти 2 модуля находятся в разных каталогах.Кроме того, каталог DLL изменчив.Теперь мне нужно получить каталог DLL в «run time».

Как я могу это сделать?

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 07 апреля 2010

Вам нужно найти, куда DLL загрузить ее или найти путь, откуда она была загружена?

Алгоритм поиска пути к DLL задокументирован в MSDN, и вы можете использовать функцию SearchPath для поиска системного пути.

Если вам нужно найти путь, по которому была загружена DLL, после ее загрузки используйте функцию GetModuleFileName . Он берет дескриптор модуля, который возвращается LoadLibrary, GetModuleHandle или передается как hinstDLL в DllMain, и возвращает полный путь к DLL.

2 голосов
/ 07 апреля 2010

Полагаю, вам нужно реализовать какой-то собственный алгоритм поиска.Только ваш exe знает, какая DLL нужна и где она может быть.Так что найдите путь и используйте его с LoadLibrary ().

Кстати, если возможно, я бы рассмотрел использование COMТаким образом, вы будете использовать DLL-библиотеку по некоторому CLSID, который полностью независим от пути к файлу.

...