32 Урока Borland Delphi

         

В зависимости от этого используется


Экспортирование функций (и процедур ) может производится несколькими способами:
    • по номеру (индексу);
    • по имени.
    В зависимости от этого используется различный синтаксис:
    {экспорт по индексу}
    procedure ExportByOrdinal; export;
    begin
    .....
    end;
    exports
    ExportByOrdinal index 10;
    {экспорт по имени}
    procedure ExportByName; export;
    begin
    .....
    end;
    exports
    ExportByName name 'MYEXPORTPROC'; { имя для экспорта может не совпадать с именем функции ! }
     
     
    Так как в Windows существует понятие "резидентных функций" DLL, то есть тех функций, которые находятся в памяти на протяжении всего времени существования DLL в памяти, в Delphi имеются средства для организации и такого рода экспорта:
    exports
    ExportByName name 'MYEXPORTPROC' resident;
     
     
    Стоит отметить тот факт, что поиск функций, экспортируемых по индексу, производится быстрее, чем при экспорте по имени. С другой стороны, экспорт по имени удобнее, особенно если Вы периодически дополняете и расширяете набор экспортируемых из DLL функций, при гарантии работы приложений, использующих DLL, и не хотите специально следить за соблюдением уникальности и соответствия индексов.
    Если же Вы будете экспортировать функции следующим образом:
    exports
    MyExportFunc1,
    MyExportFunc2,
    .....;
    то индексирование экспортируемых функций будет произведено Delphi автоматически, а такой экспорт будет считаться экспортом по имени, совпадающему с именем функции. Тогда объявление импортируемой функции в приложении должно совпадать по имени с объявлением функции в DLL. Что же касается директив, накладываемых уже на импортируемые функции, то об этом мы поговорим ниже.
     
     
        1. Использование DLL в Delphi (импорт)

        2.  

        Для организации импорта, т.е. доступа к функциям, экспортируемым из DLL, так же как и для их экспорта, Delphi предоставляет стандартные средства.
        Для показанных выше примеров, в Вашей программе следует объявить функции, импортируемые из DLL таким образом:
        { импорт по специфицированному имени }
        procedure ImportByName;external 'MYDLL' name 'MYEXPORTPROC';

        Содержание  Назад  Вперед







        Forekc.ru
        Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий