На главную страницу
Форум txt.version   




Статья :: Экспорт из DLL

 

Экспорт из DLL

Для создания перечня экспортируемых из динамической библиотеки процедур и функций используется ключевое слово exports. При этом можно указывать как функции, описанные в главном файле DLL, так и функции из присоединенных модулей.

В качестве примера рассмотрим исходный код динамической библиотеки DataCheck, простейшие функции которой проверяют введенную строку перед конвертацией на соответствие одному из типов данных.

Листинг 28.2. Исходный код динамической библиотеки DataCheck

library DataChek

uses

Windows, SysUtils, Classes, Messages, Forms,

  Dialogs, StdCtrls, ComCtrls;

function ValidDate(AText: String): Integer; 

begin

 try

Result := 0; StrToDate(AText); 

except

on E:EConvertError do Result := -1; 

end; 

end;

function ValidTime(AText: String): Integer;

 begin 

try

Result := 0; StrToTime(AText);

 except

on E:EConvertError do Result := -1; 

end; 

end;

function Validlnt(AText: String): Integer;

 begin 

try

Result := 0; StrToInt(AText);

 except

on E:EConvertError do Result := -1;

 end;

  end;

exports Validlnt,

ValidDate index 1, ValidTime index 2 name 'IsValidTime';

begin

if Length(DateToStr(Date)) < 10

then ShowMessage('Год представлен двумя цифрами');

  end.

Итак, три функции этой библиотеки обеспечивают проверку строки перед преобразованием ее в целое число, дату или время. Для обеспечения экспорта этих функций их необходимо объявить в секции exports.

При компиляции библиотеки адрес, имя и порядковый номер экспортируемой функции добавляется к специальной таблице экспорта в файле DLL.

 Примечание

Компилятор Delphi без проблем добавит таблицу экспорта и к исполняемому файлу приложения. Правда, при этом получить доступ к такой функции невозможно — это системное ограничение Windows.

Попробуйте объявить пару функций после ключевого слова exports в обычном приложении — проект компилируется без ошибок. Но сами функции недоступны другим процессам.

Имена процедур и функций в секции экспорта разделяются запятыми. Внимательный взгляд на пример экспорта в листинге 28.2 обнаруживает три различных варианта объявления.

В первом варианте компилятор самостоятельно определяет положение функции в таблице экспорта.

При использовании ключевого слова index следующее за ним число задает положение функции в таблице экспорта относительно других таких же функций.

Ключевое слово name позволяет экспортировать функцию под другим именем.

 

Экспорт из DLL

страницы в данном разделе 
 ГЛАВА 28  ГЛАВА 28 Динамические библиотеки
 Проект DLL  Экспорт из DLL
 Соглашения о вызовах  Директива register
 Директива pascal  Директива stdcall
 Директива cdecl  Директива safecall
 Инициализация и завершение работы DLL  Вызов DLL
 Неявный вызов  Явный вызов
 Ресурсы в DLL  Использование модуля ShareMem
 Резюме   


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста