Как я могу сделать отдельную папку для DLL моего приложения? - PullRequest
2 голосов
/ 28 февраля 2011

Я успешно разделил большой проект MFC на пару более мелких проектов DLL.Теперь я хочу, чтобы в папке моего приложения была отдельная папка «DLL», в которую помещены все библиотеки DLL из подпроектов.

Кто-нибудь может дать мне руководство, как этого добиться?

Ответы [ 3 ]

4 голосов
/ 28 февраля 2011

Если вы используете LoadLibrary, вам просто нужно явно указать полный путь к загружаемым DLL.

Если библиотеки DLL неявно связаны, вы можете сделать это двумя способами.

  • Попросите установщика изменить переменную PATH.Это навязчиво и «дурной тон»
  • Написать приложение-загрузчик, которое локально изменяет переменную пути, а затем выполняет настоящий исполняемый файл.

Лучшим решением было бы просто поместить библиотеки DLL в тот же каталог, что и исполняемый файл.

4 голосов
/ 28 февраля 2011

Перенаправление DLL - довольно новая функция ( Windows 2000 IIRC ).Назовите каталог DLL <myapp>.exe.local, и Windows сначала проверит его на наличие всего, что загружено через LoadLibrary(Ex).Это включает в себя загруженные с задержкой DLL.

0 голосов
/ 28 февраля 2011

РЕДАКТИРОВАТЬ: Как указал Эрик, это не работает.Извините.

См. Порядок поиска в библиотеке динамических ссылок .Вкратце, вы можете сделать это, используя разделы реестра в разделе «HKEY_LOCAL_MACHINE \ SORTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths»Reg файл, как показано ниже, показывает, как:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\Program Files\\MyCompany\\MyApp\\MyApp.exe"
"Path"="C:\\Program Files\\MyCompany\\MyApp\\MyDLLs"
...