Проблемы с использованием определенных версий DLLS
У меня проблема с созданием приложения под управлением WPF для Windows. Это приложение использует CEF Sharp - управляемую библиотеку, которая в основном связана с неуправляемой библиотекой Chromium Embedded Framework. Это зависит от проекта угла через DLL - libEGL.dll и libGLESv2.dll.
Проблема у меня заключается в том, что я использую другую нативную библиотеку, которая имеет свои версии DLL. Эти DLL похожи - но определенно разные.
Проблема, с которой я сталкиваюсь, заключается в том, чтобы каждая из этих зависимостей использовала свою собственную версию библиотеки. В настоящее время chromium и другая библиотека загружают библиотеки DLL из того же каталога, в котором находится.exe.
Каков наилучший / наиболее эффективный способ решения этой проблемы? Я кое-что прочитал - некоторые источники предполагают, что "WinSxS" должен работать, в то время как другие предполагают, что он работает только для отдельных приложений, а не для одного и того же процесса, использующего разные версии DLL.
Спасибо за любую помощь.
1 ответ
В основном как дорожная карта:
- Переместите все связанные с CEF файлы в отдельный каталог.
- Загрузите libcef.dll из этого каталога (лучше обратиться к документации по cefsharp) или просто используйте LoadLibraryEx, прежде чем коснуться CefSharp.
- В этот момент CEF должен загрузить что-либо из собственного каталога, но это может потребоваться для перепроверки.
- Загрузите вторую библиотеку. Убедитесь, что он загружает угол из собственного каталога.
В зависимости от результата вы сможете решить, что делать. Например, вам может потребоваться исправить вторую библиотеку, чтобы заставить ее загружать угол, используя правильный путь.
ДОБАВИТЬ: Возможно, вы захотите поиграть с SetDllDirectory или другим материалом LoadLibrary, но прежде всего переместите двоичные файлы CEF в другой каталог - он предназначен для работы в этом случае.