Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
Динамическое подключение dll в C#
Поговорим о динамическом подключении библиотек dll (Dynamic Link Library) к программе, разрабатываемой на языке программирования C#. Рассмотрим пример написания консольного клиента для dll-файла.
Динамическое подключение dll происходит во время выполнения программы, в том месте, в котором действительно необходимо использовать функции из библиотеки. Вызов будет осуществляться явно, при выполнении определенного оператора. Статическое же подключении dll происходит сразу при запуске программы, поэтому, подключая библиотеку dll динамически, мы экономим ресурсы компьютера при выполнении нашей программы.
В статье «Как создать dll в Visual Studio» рассказывалось, как создавать dll-файлы, в частности и на языке C# (если вы не знаете как создавать dll, рекомендуем почитать ту статью). Там мы написали библиотеку dll, содержащую два метода: add и sub, которые складывают и вычитают два целых числа. Теперь разработаем консольный клиент для этой dll, продемонстрируем динамическое подключение этой библиотеки.
Как подключить dll в Visual Studio
Сначала создадим в Visual Studio консольный проект на языке C#, и поместим в папку проекта Debug файл «dllcsharp.dll».

Перейдем к разработке программы. Для подключения dll нам понадобился пространство имен System.Reflection. Включим его в проект.
Источник: vscode.ru
Как подключить dll к программе

Использование библиотек
В прошлой статье, я рассказывал о том, как создаются библиотеки классов, написанные на C#. Прочитайте ту статью и соберите собственную библиотеку, если Вы не хотите ограничится только теорией в этой статье. В этой статье, я расскажу как использовать уже созданные библиотеки (DLL) в своих программах. И так, к делу!
Давайте создадим новый проект консольного приложения (как создавать проекты консольных приложений, я рассказывал в уроке № 3 базового курса).
А теперь, в окне Visual Studio, в обозревателе решений, ищем группу «Ссылки» и раскрываем её, как показано на рисунке ниже.

Список внешних ссылок нового проекта
А теперь, вызовем контекстное меню на пункте «Ссылки», и выберем в нем «Добавить ссылку», как показано на рисунке ниже.

СОЗДАНИЕ DLL C# | КАК ПОДКЛЮЧИТЬ DLL | C# ПЛЮШКИ
Добавление ссылки в проект
В появившемся окне, выбираем, в левой области выбираем пункт «Обзор» и в низу окна, нажимаем на кнопку «Обзор», как показано на рисунке ниже.

Загрузка внешней библиотеки
В появившемся окне, перейти в папку, в которое лежит библиотека (DLL) созданная в предыдущей статье (ссылку на которую, я давал ранее), выбрать эту библиотеку и нажать на кнопку «Добавить», как показано на рисунке ниже.

Выбор нужной библиотеки
После чего, нажать на кнопку «OK» в предыдущем окне. В результате, список ссылок проекта, будет пополнен еще одной:

Пополненный список ссылок проекта
Теперь, мы можем использовать в налей программе класс «INIManager» из подключенной библиотеки. Но перед этим, мы должны выполнить еще одну операцию. Рассмотрим фрагмент кода подключенной библиотеки (он остался у нас после предыдущей статьи):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace FirstDLL < public class INIManager < //Конструктор, принимающий путь к INI-файлу public INIManager(string aPath)
Обратите внимание на выделенную строку, это объявление пространства имен (namespace), как бы некого контейнера, в котором находится класс «INIManager». И мы не сможем воспользоваться классом, пока не укажем системе что нужно взять во внимание это пространство имен. Т.е. нам нужно подключить пространство имен в нашем проекте. Для этого, добавим строку «using FirstDLL;» в конец блока директив using, который расположен в самом начале основного файла проекта. Подключение нужного пространства имен показано ниже (интересующая строка кода выделена):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FirstDLL;
Вот теперь, можно использовать класс из подключенной библиотеки, а сделать это можно написав в методе «Main» такой код:
//Создание объекта, для работы с файлом INIManager manager = new INIManager(«C:\my.ini»); //Получить значение по ключу name из секции main string name = manager.GetPrivateString(«main», «name»); //Вывести полученное имя в консоль Console.WriteLine(name); //Записать значение по ключу age в секции main manager.WritePrivateString(«main», «age», «21»);
Как подключить dll библиотеку в visual studio (c++)?
Если кратко, то dll можно подключить двумя способами:
В первом случае для подключения необходимы: файл заголовка (.h), библиотека импорта (.lib), сама библиотека dll(*.dll). Файл заголовка через #include подключаем туда, где собираемся использовать библиотеку, компоновщику указываем на библиотеку импорта (применительно к vs в свойствах проекта компоновщик->ввод->дополнительные зависимости) и указываем, где искать саму dll (через переменную PATH или в свойствах проекта, например отладка->окружение).
Во втором случае с помощью функции LoadLibrary подгружаем dll, получаем указатель на интересующий объект с помощью функции GetProcAddress, используем.
typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT); . HINSTANCE hDLL; // Handle to DLL LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer DWORD dwParam1; UINT uParam2, uReturnVal; hDLL = LoadLibrary(«MyDLL»); if (hDLL != NULL) < lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, «DLLFunc1»); if (!lpfnDllFunc1) < // handle the error FreeLibrary(hDLL); return SOME_ERROR_CODE; >else < // call the function uReturnVal = lpfnDllFunc1(dwParam1, uParam2); >>
Источник: ru.stackoverflow.com