Главная » C++, C++ Builder » Работа с динамически связываемыми библиотеками (DLL) в CBuilder

0

Выше в главе мы рассматривали хранение ресурсов в динамической библиотеке. Однако кроме ресурсов вы можете хранить в DLL многие другие вещи, самой важной из которых является код функций. DLL — одна из самых полезных и мощных возможностей, когда-либо добавленных в операционную систему Windows. Используя DLL, вы решаете две главные задачи в разработке приложений: ограничения по памяти и проблемы с версиями.

Ограничения по памяти в многозадачных операционных системах возникают из-за того, что одновременно загружено в память много программ. Многие из этих программ выполняют одни и те же задачи, однако каждая содержит свой собственный код для выполнения этой работы. Если бы весь этот код был извлечен из приложения и помещен в отдельный модуль, совместно используемый всеми запущенными программами, то было бы гораздо больше свободной памяти для программ. Это основная концепция DLL. Лучшим примером DLL может служить сама операционная система. Все компоненты Windows, которые вы вызываете из вашего приложения (код прорисовки, код файловой системы и т. д.), живут в наборе системных DLL, которые используются совместно всеми программами, работающими в Windows. Возможность совместно использовать этот код означает, что вашей программе не нужно держать этот код в себе.

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

Важно, что вы можете не только загружать информацию, такую как ресурсы, из DLL, но также и использовать функции, которые там хранятся. В данном примере мы создадим библиотеку (DLL), а затем используем другую программу для загрузки функции из этой DLL в наше приложение. Мы можем использовать функции в DLL для отображения сообщения, подсчета результатов и любых других вещей, которые можно делать в обычном приложении. У DLL  есть  некоторые ограничения,  в  основном  они  относятся  к  управлению  памятью,  но  к  нашему  примеру  они отношения не имеют.

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии