Составители:
гибкой. Структура DLL-модуля практически такая же, как и ЕХЕ-модуля. Динамическая
библиотека это еще и возможность разработки приложений на разных языках. Динами-
ческая библиотека, написанная, скажем, на Visual C++, может вызываться из программ,
написанных на любых языках. Следует также отметить, что использование динамиче-
ских библиотек экономит дисковое пространство, т. к. процедура из такой библиотеки
помещается в модуль лишь один раз, в отличие от процедур, помещаемых в модули из
статических библиотек.
Динамическая библиотека проецируется на адресное пространство вызывающего
процесса. В результате она становится частью этого процесса. Если динамическая биб-
лиотека резервирует динамическую память, то этот блок памяти принадлежит процессу.
При удалении библиотеки из памяти блок остается и удаляется только процессом.
При создании DLL необходимо указывать экспортируемые функции. Делается это
следующим образом [7]:
_declspec(dllexport)int Func(char * s);
В программе, вызывающей эту функцию, следует ввести следующую строку:
_declspec(dllimport) int Func(char * s);
Для дальнейшего изучения DLL введем понятие связывание. Во время трансляции
связываются имена, указанные в программе как внешние с соответствующими именами
из библиотек. Такое связывание называется ранним (или статическим). Напротив, в слу-
чае с динамической библиотекой связывание происходит во время выполнения модуля.
Такое связывание называется поздним (или динамическим). При этом позднее связыва-
ние может происходить в автоматическом режиме в начале запуска программы и при
помощи специальных API-функций (см. ниже) по желанию программиста. При этом го-
ворят о явном и неявном связывании (рис.1.2).
Трансляция Время выполнения
Исполняемый модуль
Рис.1.2. Иллюстрация механизма связывания
В среде Windows практикуются два механизма связывания: по символьным и по-
рядковым номерам. В первом случае функция, определенная в динамической библиоте-
ке, идентифицируется по ее имени, во втором - по порядковому.
Динамическая библиотека может содержать ресурсы. Так, файлы шрифтов пред-
ставляют собой динамические библиотеки, единственным содержимым которых явля-
ются ресурсы. Надо сказать, что динамическая библиотека как бы становится продолже-
нием вашей программы, загружаясь в адресное пространство процесса. Соответственно,
Статические
библиотеки
Динамические
библиотеки
Раннее
связывание
Позднее
неявное
связывание
Позднее
явное
связывание
38
гибкой. Структура DLL-модуля практически такая же, как и ЕХЕ-модуля. Динамическая
библиотека это еще и возможность разработки приложений на разных языках. Динами-
ческая библиотека, написанная, скажем, на Visual C++, может вызываться из программ,
написанных на любых языках. Следует также отметить, что использование динамиче-
ских библиотек экономит дисковое пространство, т. к. процедура из такой библиотеки
помещается в модуль лишь один раз, в отличие от процедур, помещаемых в модули из
статических библиотек.
Динамическая библиотека проецируется на адресное пространство вызывающего
процесса. В результате она становится частью этого процесса. Если динамическая биб-
лиотека резервирует динамическую память, то этот блок памяти принадлежит процессу.
При удалении библиотеки из памяти блок остается и удаляется только процессом.
При создании DLL необходимо указывать экспортируемые функции. Делается это
следующим образом [7]:
_declspec(dllexport)int Func(char * s);
В программе, вызывающей эту функцию, следует ввести следующую строку:
_declspec(dllimport) int Func(char * s);
Для дальнейшего изучения DLL введем понятие связывание. Во время трансляции
связываются имена, указанные в программе как внешние с соответствующими именами
из библиотек. Такое связывание называется ранним (или статическим). Напротив, в слу-
чае с динамической библиотекой связывание происходит во время выполнения модуля.
Такое связывание называется поздним (или динамическим). При этом позднее связыва-
ние может происходить в автоматическом режиме в начале запуска программы и при
помощи специальных API-функций (см. ниже) по желанию программиста. При этом го-
ворят о явном и неявном связывании (рис.1.2).
Трансляция Время выполнения
Исполняемый модуль
Позднее
Раннее Позднее явное
связывание неявное связывание
связывание
Статические Динамические
библиотеки библиотеки
Рис.1.2. Иллюстрация механизма связывания
В среде Windows практикуются два механизма связывания: по символьным и по-
рядковым номерам. В первом случае функция, определенная в динамической библиоте-
ке, идентифицируется по ее имени, во втором - по порядковому.
Динамическая библиотека может содержать ресурсы. Так, файлы шрифтов пред-
ставляют собой динамические библиотеки, единственным содержимым которых явля-
ются ресурсы. Надо сказать, что динамическая библиотека как бы становится продолже-
нием вашей программы, загружаясь в адресное пространство процесса. Соответственно,
38
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »
