ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Динамическое подключение 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, то нажмите на кнопку ниже:

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

 

4.9/5 - (9 голосов)



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

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

Ваш адрес email не будет опубликован.