Рефераты | Рефераты по информатике, программированию | Создание в среде Borland C++ Builder dll, совместимой с Visual C++ | страница реферата 15 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Основным преимуществом неявной загрузки dll является именно неявность использования dll со стороны клиентского приложения. Другими словами, приложение, вызывая функции, не подозревает, что они могут находиться где-то во внешнем модуле. Результатом является упрощение кода программы. К недостаткам следует отнести тот факт, что dll находится в памяти в течение всей работы программы, неявно ее использующей. Загрузка dll осуществляется при загрузке приложения – загрузчик PE-файлов, просматривая каждую запись в таблице импорта приложения, загружает соответствующую этой записи dll. Следовательно, если используемых библиотек много, загрузка основной программы может затянуться. В случае отсутствия неявно используемой dll приложение вообще не запустится.

    Итоговый алгоритм с неявным связыванием для экспорта (импорта) __cdecl-функций состоит из следующей последовательности действий (см. также Демонстрационный проект):

    1. Объявить экспортируемые функции как __cdecl.

    2. Поместить объявления функций в блок extern ”С”, при этом не экспортировать классы и функции-члены классов.

    3. В заголовочный файл для возможности его дальнейшего использования на клиентской стороне вставить:

    #ifdef _DLLEXPORT_

     #define _DECLARATOR_ __declspec(dllexport)

    #else

     #define _DECLARATOR_ __declspec(dllimport)

    #endif

    и добавить макрос _DECLARATOR_ к объявлению каждой функции, например,

    int _DECLARATOR_ __cdecl SumFunc( int a, int b );

    4. Далее либо создать и добавить к проекту .def-файл с псевдонимами для каждой функции, либо добавить в заголовочный файл библиотеки следующее:

    #ifdef _MSC_VER

     #define FuncName1 _FuncName1

     #define FuncName2 _FuncName2

     #define FuncNameN _FuncNameN

    #endif

    Если использовался #define-трюк, то пункт 7 нужно будет пропустить.

    5. Скомпилировать BCB dll.

    6. С помощью impdef.exe создать .def-файл с наименованиями экспортируемых функций.


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



    Предыдущая страница реферата | 8  9  10  11  12  13  14  15  16  17  18 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •