Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

ремонт натяжного потолка

--------------------------

Библиотеки динамической компоновки

-          DLL_THREAD_DETACH – завершен один из потоков процесса, использующего библиотеку;

78

-          DLL_PROCESS_DETACH – библиотека будет выгружена в результате завершения процесса, требующего библиотеку, или в результате вызова функции FreeLibrary.

Функция  DLLEntryPoint  может  отменить  загрузку  библиотеки,  если  вернет  значение

FALSE. Для успешной инициализации библиотеки функция должна возвращать значение TRUE.

            Для того, чтобы функции DLL-библиотеки были доступны использующим их приложениям, эти функции необходимо сделать экспортируемыми. Самый простой способ экспортировать функции – описать их соответствующим образом в файле определения модуля (*.def) DLL-библиотеки. Ниже приведен пример подобного файла.

            LIBRARY mydll

            DESCRIPTION “ Dynamic-Link  Library”

EXPORTS

    Func_A @1

    Func_B @2

    Func_C @3

Оператор LIBRARY задает имя DLL-библиотеки, под которым она будет определена в библиотеке импорта для компиляции исполнимых модулей приложений, импортирующих функции данной библиотеки. Оператор DESCRIPTION задает произвольную текстовую строку- описание библиотеки.  В операторе EXPORTS перечислены имена и порядковые номера экспортируемых библиотекой функций. В принципе достаточно указать только имена функций, но рекомендуется также указывать и их порядковые номера. Дело в том, что функции библиотеки вызываются не по именам, а по порядковым номерам, которые фактически являются номерами точек входа в библиотеку. Поэтому, редактор связей самостоятельно присваивает номера функциям, если они явно не указаны в файле определения модуля. Это сильно осложнит добавление новых функций в библиотеку, так как потребует перекомпиляции не только самой библиотеки, но и всех приложений, использующих данную библиотеку.

предыдущаяследующая