Динамическое подключение dll в Си

В этой статье речь пойдет о динамическом подключении библиотеки dll к программе, разрабатываемой в Visual Studio. Иначе говоря, будет написан клиент к dll-файлу. Разработку будем вести на языке программирования Си.

Динамическое подключение dll (в отличие от статического через References) позволяет экономить ресурсы: библиотека загружается не при запуске программы, а во время ее выполнения, когда действительно необходимо обратится к функциям библиотеки. Dll будет загружена при выполнении соответствующего оператора.

В статье “Как создать dll в Visual Studio” мы написали библиотеку dll с двумя функциями: add и sub, которые соответственно складывают и вычитают два целых числа. Теперь напишем на языке программирования Си клиент к этому dll-файлу.

Создадим в Visual Studio консольное приложение и поместим в папку проекта Dubug dll-файл.

Dll в папке с проектом - vscode.ru

Перейдем к коду приложения. Для начала подключим необходимые библиотеки.

Определим новый тип данных – function. Это будет указатель на функцию с контролем прототипа функции (аргументы функции – это числа a и b). Указатель на функцию необходим для того, чтобы хранить в нем ее адрес, полученный из библиотеки dll. По этому указателю будет осуществлен вызов функции.

Теперь напишем функцию main().

Разберем код функции main(). В начале, загружаем dll-файл (строка 3). В условии if проверяем, успешно ли прошла загрузка (строка 5). Если ничего не загрузилось (значение модуля равно NULL), то выведем сообщение об ошибке (строка 7), если загрузка прошла успешно, то идем далее. Получаем адрес функций add и sub (строки 11-12), проверяем удалось ли получить адреса (14), если не удалось, то выводим сообщение об ошибке (16), если удалось, то двигаемся дальше. Присваиваем значения переменным a и b (строки 21-22), вычисляем значения функций add и sub и выводим результат на экран (23-24). Освобождаем память из под библиотеки (строка 28). Ждем ввода какого-нибудь символа, чтобы консоль мгновенно не закрылась после выполнения приложения (30).

Демонстрация работы программы представлена на рисунке:

Клиент для dll - vscode.ru

Если вы хотите скачать исходник программы, написанной в Visual Studio, то нажмите на кнопку ниже:

Скачать исходник

 

Динамическое подключение dll в Си
5 (100%) 4 votes

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">