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

  • Таким образом, в таблицу экспорта dll добавляются функции-псевдонимы, имена которых соответствуют функциям, объявленным в заголовочном файле нашей библиотеки. Для полного соответствия (хотя этого можно и не делать) удалим из ImplicitLinking_cdecl.def упоминания обо всех посторонних для приложения-клиента функциях, так как заголовочный файл содержит объявления только двух функций. В результате получим .def-файл готовый для генерации из него объектного .lib-файла:

    ImplicitLinking_cdecl.def

    libRARY IMPLICITLINKING_CDECL.DLL

    EXPORTS

     SumFunc @4 ; SumFunc

     ViewStringGridWnd @5 ; ViewStringGridWnd

    ПРИМЕЧАНИЕ

    В единственной статье, которую мне удалось найти по данной теме (на сайте bcbdev.com), рекомендовалось, помимо удаления из .def-файла посторонних функций, заменить наименование секции EXPORTS на IMPORTS. Делать этого не следует по той простой причине, что утилита lib.exe (по крайней мере, поставляемая с 6-ой и 7-ой Visual Studio) секцию IMPORTS не поддерживает, поэтому игнорирует все последующие описания функций и создает пустой .lib-файл. Утилита lib.exe находится в каталоге $(VC)Bin, но запустить ее обычно с первого раза не удается, поскольку для работы ей требуется библиотека mspdb60.dll (для lib.exe, поставляемой с Visual Studio 7 – mspdb70.dll). mspdb60.dll лежит в папке $(Microsoft Visual Studio)CommonMSDev98Bin, а mspdb70.dll – в папке $(Microsoft Visual Studio .NET)Common7IDE.

    С помощью утилиты lib.exe создадим необходимый для неявного связывания .lib-файл в формате COFF, для этого в командной строке наберем

    lib.exe /def:ImplicitLinking_cdecl.def

    либо

    lib.exe /def:ImplicitLinking_cdecl.def /out:ImplicitLinking_cdecl.lib

    Полученный .lib-файл добавим к проекту VC-клиента (Project -> Add To Project -> Files…).

    Использование директивы препроцессора #define

    Теперь рассмотрим способ, позволяющий добиться одинаковых названий функций в заголовочном и объектном (.lib) файлах с помощью директивы #define. Перепишем заголовочный файл нашей BCB-библиотеки следующим образом

    Листинг 4 - Компилятор Borland C++ Builder 5

    ImplicitLinking_cdecl.h

    #ifndef _IMPLICITDLL_

    #define _IMPLICITDLL_

    #ifdef _DLLEXPORT_

     #define _DECLARATOR_ __declspec(dllexport)

    #else

     #define _DECLARATOR_ __declspec(dllimport)

    #endif

    extern "C"


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



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




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

       




    Категории:



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




    •