@kot220487

Возможно ли путь к подключаемой dll вынести в какой-нибудь внешний файл?

В проекте VB.net подключаю dll так:
<DllImport("dll.dll",
               EntryPoint:="Test",
               SetLastError:=True,
               CharSet:=CharSet.Ansi,
               ExactSpelling:=True,
               CallingConvention:=CallingConvention.Cdecl
              )>

Можно ли путь и саму dll каким-то образом заменить на переменную, которая бы инициализировалась из какого-нибудь конфигурационного файла? Например, имея один проект на vb.net и набор версий библиотек, переключаться между ними. (Решение интересует для любых dll)
  • Вопрос задан
  • 2434 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Sumor
Неуправляемую dll можно подгружать динамически через LoadLibrary, указывая к ней путь.
Порядок примерно такой:
1. LoadLibrary с путём к dll.
2. GetProcAddress получает неуправляемый указатель на функцию в dll.
3. Marshal.GetDelegateForFunctionPointer преобразует неуправляемый указатель на функцию в делегата, который можно использовать обычным для c# способом.
4. FreeLibrary завершает работу с dll.

Подробнее и с примером

Ну а с управляемыми нужно работать через класс Assembly.
Например, загрузка сборки — Assembly.LoadFrom(string)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы