Проблемы с использованием определенных версий DLLS - PullRequest
0 голосов
/ 12 октября 2018

У меня проблема с созданием приложения под управлением WPF для Windows.В этом приложении используется управляемая библиотека CEF Sharp, которая в основном является связыванием для неуправляемой библиотеки Chromium Embedded Framework.Это зависит от проекта угла через DLL - libEGL.dll и libGLESv2.dll.

У меня проблема в том, что я использую другую нативную библиотеку, которая имеет свои версии DLL.Эти библиотеки похожи - но определенно отличаются.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы каждая из этих зависимостей использовала свою собственную версию библиотеки.В настоящее время хром и другая библиотека загружают библиотеки DLL из того же каталога, в котором находится .exe.

Каков наилучший / наиболее эффективный способ решения этой проблемы?Я немного перечитал - некоторые источники предполагают, что «WinSxS» должен работать, в то время как другие предполагают, что он работает только для отдельных приложений, а не для одного и того же процесса с использованием разных версий DLL.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 12 октября 2018

В основном в виде дорожной карты:

  1. Переместите все связанные с CEF файлы в отдельный каталог.
  2. Загрузите libcef.dll из этого каталога (лучше обратиться к документации cefsharp) или просто используйте LoadLibraryExпрежде чем вы коснетесь CefSharp.
  3. В этот момент CEF должен загрузить что-либо из собственного каталога, но это может потребоваться для повторной проверки.
  4. Загрузите вторую библиотеку.Убедитесь, что он загружает угол из собственного каталога.

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

ADD: Возможно, вы захотите поиграть с SetDllDirectory или другим материалом LoadLibrary, но прежде всего переместите двоичные файлы CEF в другой каталог - он предназначен дляработать в этом случае.

...