Проблемы с использованием определенных версий DLLS

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

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

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

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

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

1 ответ

В основном как дорожная карта:

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

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

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

Другие вопросы по тегам