загрузка DLL с использованием приложения C ++ - PullRequest
0 голосов
/ 25 февраля 2019

Мой плагин в C ++ с использованием Visual Studio.У нас есть несколько плагинов в нашем продукте.наш плагин exe использует spotabcXXXX.dll одной версии, которая находится в нашей папке bin, где exe присутствует, а другой плагин также использует spotabcXXXX.dll другой версии, которая находится в другом месте.

Когда мы запускаем наш плагин автономно, он использует spotabcXXXX.dll находится в нашей корзине.Но когда мы запускаем весь продукт, наш плагин не ссылается на spotabcXXXX.dll из нашей корзины, а ссылается из другого места.Архитектура нашего продукта:

C:\Spot
-->CommonFiles
   ----->spotabcXXXX.dll
-->OurPlugin
   ----->spotabcXXXX.dll

Поскольку CommonFiles стоит на первом месте (не знаю, по какой причине), наш плагин берет файл spotabcXXXX.dll из CommonFiles.Мы не используем LoadLibrary программно.

Пожалуйста, помогите мне, как загрузить DLL из нашей корзины.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Это как раз та ситуация, для которой Параллельные сборки и Контексты активации могут использоваться для адресации.

Если ваш плагин загружает spotabcXXXX.dll статически, вы можете определить для него манифест SxS, который определяет зависимость от конкретной версии spotabcXXXX.dll, которую вы хотите.Когда ваш плагин загружен, загрузчик ОС загрузит и свяжет зависимую DLL, указанную в манифесте.

Если ваш плагин загружает spotabcXXXX.dll динамически, вы можете создать контекст активации, который зависит от конкретной версии spotabcXXXX.dll вы хотите, и затем вы можете активировать контекст перед вызовом LoadLibrary().

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

0 голосов
/ 25 февраля 2019

Вам необходимо проверить соответствие порядка поиска в DLL и его связь с вашим «целым продуктом» и его местоположением;пожалуйста, смотрите: https://docs.microsoft.com/en-us/windows/desktop/dlls/dynamic-link-library-search-order

...