Как загрузить рядом библиотеки DLL с одинаковыми именами (Visual Studio)

У меня есть вопрос о side-by-side assemblies.

Вот ситуация:

У меня есть исполняемый файл app.exe, который загружает плагины путем поиска в каталоге plugins. app.exe зависит от определенного A.dll.

Я разрабатываю плагин, который зависит от более старой, настроенной версии A.dll с тем же именем. Обновление этой старой настроенной версии до более новой версии невозможно, поэтому я подумал, что смогу загрузить два файла A.dll одновременно.

Вот структура каталогов:

\bin
    app.exe
    A.dll (newer version)
    \plugins
        myplugin.dll

Обе версии A.dll сами по себе зависят от огромного количества других DLL, которые могут иметь аналогичные проблемы с версией. (Я также должен упомянуть, что работаю с 64-битным приложением, если это имеет значение.)

Как мне настроить это в Visual Studio, чтобы я мог загружать обе библиотеки A.dll одновременно, чтобы myplugin.dll использовала более старую версию, а app.exe использовала более новую версию?


person dashik    schedule 16.05.2014    source источник


Ответы (1)


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

person David Heffernan    schedule 16.05.2014
comment
Имеет ли значение тот факт, что A.dll имеет много других зависимостей? На самом деле это больше похоже на то, что myplugin.dll вызывает dep.dll, который вызывает bin\A.dll. Я хочу, чтобы dep.dll вместо этого вызывал bin\plugins\A.dll (но не могу изменить dep.cpp). Если я попробую LoadLibrary в myplugin.cpp, я получу ошибку Исключения первого шанса (точка входа не найдена). Что мне делать в этом случае? - person dashik; 16.05.2014
comment
Ни одна из этих деталей не находится в вопросе - person David Heffernan; 16.05.2014