Совместное использование общего DLL между двоичными файлами в разных каталогах - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть несколько dll, живущих в разных подкаталогах, которые зависят от другой dll третьей стороны, называемой common.dll. Я хотел бы настроить эти библиотеки, чтобы они знали, где найти common.dll, не делая common.dll видимым для других программ, чтобы избежать столкновений.

Например:

  • Foo / bar.dll
  • Foo / бар / fubar.dll
  • общее / common.dll

Как для bar.dll, так и для fubar.dll, в зависимости от common.dll

У меня есть следующие ограничения:

  • Несмотря на то, что у меня есть полный контроль над dll, у меня нет контроля над вызывающим исполняемым файлом, поэтому модификация PATH не возможна.
  • он должен работать на всех окнах от XP до 7
  • Я не могу установить файл common.dll в «известном» месте, используемом Windows
  • изменение кода DLL для установки путей через API нежелательно

IOW, что-то вроде unix rpath + ORIGIN на моих dll было бы идеальным решением

Я надеялся, что использование манифеста может помочь, но это выглядит очень сложно или недоступно для Windows XP.

1 Ответ

0 голосов
/ 03 ноября 2011

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

реальный файл c:\blah\common\xxx.dll

ссылка: c:\MyDir\xxx.dll

теперь вызывающие абоненты могут использовать c:\MyDir\xxx.dll, и они получают синтаксис c:\blah\common\xxx.dll

в Windows: mklink c:\MyDir\xxx.dll c:\blah\common\xxx.dll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...