Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ Отчёт.docx
Скачиваний:
89
Добавлен:
01.03.2025
Размер:
160.19 Кб
Скачать

Библиотека .Dll

DLL (Dynamic Link Library – динамически компонуемая библиотека) – это участок кода, хранимый в файле с расширением .dll. Код может быть использован другими программами, но сама по себе библиотека программой не является. Динамически компонуемые библиотеки представляют собой набор скомпилированных функций.

Первоначально предполагалось, что введение DLL позволит эффективно организовать память и дисковое пространство, используя только один экземпляр библиотечного модуля для различных приложений. Это было особенно важно для ранних версий Microsoft Windows с жёсткими ограничениями по памяти. Далее, предполагалось улучшить эффективность разработок и использования системных средств за счёт модульности. Замена DLL-программ с одной версии на другую должна была позволить независимо наращивать систему, не затрагивая приложений. Кроме того, динамические библиотеки могли использоваться разнотипными приложениями.

Основные направления использования DLL:

  • всевозможные модули расширения функциональности приложений – так называемые plug-in;

  • локализация приложения;

  • разделение объектов абстракции (функций, классов и пр.) между приложениями;

  • независимость модификации кода – DLL может быть в любой момент переписана с сохранением экспортируемых интерфейсов;

  • реализация определенных действий, которые можно совершить только при помощи DLL;

  • хранилище ресурсов с возможностью независимого изменения этих ресурсов.

Загрузка библиотеки в память может быть статической и динамической.

При статической загрузке DLL автоматически загружается при запуске использующего ее приложения. Такая DLL содержит экспортируемые функции, описание которых находится в файле библиотеки импорта (import library file – .lib). Для использования статической загрузки необходимо на этапе компоновки к программе подключить .lib файл требуемой DLL. В C++ Builder это сводится к включению в проект .lib файла через менеджер проектов.

При динамической загрузке можно загружать DLL по мере необходимости и выгружать её, когда она не нужна. Однако работать с такими библиотеками сложнее, чем со статическими.

Редактирование библиотеки функций для построения графиков

Библиотека функций состоит из 3-ёх частей:

  • раздел объявлений – содержит указания на заголовочные файлы необходимых стандартных библиотек языка C++, константное значение количества функций для построения графиков, список имён функций для экспорта, а также входную точку .dll библиотеки;

  • раздел функций построения – содержит реализацию функций построения графиков;

  • раздел экспорта – содержит 2 функции, одна из которых возвращает количество написанных функций, а вторая – имена этих функций и их заголовки.

Для добавления в библиотеку новой математической функции необходимо описать её заголовок и тело в разделе функций построения по следующему образцу:

extern C <тип возвращаемого значения> __export <имя функции>

(<типы и имена параметров>)

В данной курсовой работе рассматриваются вещественные функции одного вещественного аргумента. Поэтому в качестве типа возвращаемого значения и типа параметра необходимо указать тип double. Например:

extern “C” double __export abs_sin_x(double x)

После заголовка пишется тело функции, в конце которого указывается, какое значении необходимо вернуть в программу. В теле функции также необходимо указать область её определения. В случае если аргумент функции x не входит в эту область, следует вернуть константное значении DBL_MIN.

extern “C” double __export exp_sin_1_div_x (double x)

{

if (x == 0.0) return DBL_MIN;

return exp(sin(1.0/x));

}

После написания функции нужно увеличить значение константы N_FUNK, описанной в разделе объявлений, на единицу.

Следующим шагом в добавлении новой функции является её связывание с приложением. Для этого в разделе объявлений необходимо добавить имя функции и имя заголовка в массив имён VALUES:

{"<имя функции>","_<заголовок функции>"},

где <имя функции> - строка, отображаемая в программе, а <заголовок функции> - строка, записанная в библиотеке. Перед заголовком функции необходимо добавить символ подчёркивания (“_”).

Например:

{"tan(x/2)", "_tan_x_div_2"},

После добавления новой функции в библиотеку следует заново собрать её. В CodeGear C++ Biulder это делается нажатием правой кнопки на имени проекта в окне “Project Manager” и выбором пункта меню “Build”. Если построение завершится успешно, то в папке с исходным кодом в подпапке Debug (либо Release – зависит от конфигурации) появится готовая .dll библиотека, которую можно использовать в приложении.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]