Управление версиями DLL

Управление версиями DLL

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

• В результате добавления новых функций в случае неявного связывания могут стать недействительными смещения, определенные для приложений во время компоновки с .lib-файлами. От этой проблемы можно избавиться, применив явное связывание.

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

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

Проблемы совместимости различных версий DLL, носящие жаргонное название "кошмара DLL", не являются столь острыми, если в одном каталоге поддерживать только одну версию DLL. Однако предоставить отдельный каталог для каждой из различных версий вовсе не так просто, как может показаться. Существует несколько других вариантов решения этой проблемы.

• Можно использовать номер версии DLL в именах .DLL– и .LIB-файлов, обычно в виде суффикса. Так, чтобы соответствовать номеру версии, используемой в данной книге, в примерах, приведенных на Web-сайте книги, и во всех проектах используются файлы Utility_3_0.LIB и Utility_3_0.DLL. Применяя явное или неявное связывание, приложения могут формулировать свои требования к версиям и получать доступ к файлам с различными именами. Такое решение характерно для UNIX-приложений.

• Компания Microsoft ввела понятие параллельных DLL (side-by-side DLL), или сборок (assemblies) и компонентов (components). При таком подходе в приложение необходимо включать объявление на языке XML, в котором определяются требования к DLL. Рассмотрение этой темы выходит за рамки данной книги, однако дополнительную информацию вы можете получить на Web-сайте компании Microsoft, в разделе, посвященном вопросам разработки приложений.

• Платформа .NET Framework предоставляет дополнительные средства поддержки выполнения приложений в условиях сосуществования различных версий DLL.

В примерах проектов, используемых в данной книге, используется первый из отмеченных подходов, предусматривающий включение номеров версий в имена файлов. С целью предоставления дополнительной поддержки, обеспечивающей возможность получения приложениями информации о DLL, во всех DLL реализована функция DllGetVersion. Кроме того, Microsoft предоставляет эту косвенно вызываемую функцию в качестве стандартного средства получения информации о версии в динамическом режиме. Указанная функция имеет следующий прототип: 

HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi ) 

Информация о DLL возвращается в структуре DLLVERSIONINFO, в которой имеются поля типа DWORD для параметров cbSize (размер структуры), dwMajorVersion, dwMinorVersion, dwBuildNumber и dwPlatformID. В последнем поле, dwPlatformID, может быть установлено значение DLLVER_PLATFORM_NT, если библиотека не выполняется под управлением Windows 9x, или DLLVER_PLATFORM_WINDOWS, если это ограничение отсутствует. В поле cbSize должно находиться значение sizeof (DLLVERSIONINFO). В случае успешного выполнения функция возвращает значение NOERROR. Функция DllGetVersion реализована в проекте Utility_3_0.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Управление версиями

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Управление версиями Компоновочным блокам .NET назначается состоящий из четырех частей числовой идентификатор версии, имеющий вид ‹главный номер версии›.‹дополнительный номер версии›.‹номер компоновки›.‹номер варианта› (если вы не укажете явно идентификатор версии


Управление проектами

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Управление проектами В завершение главы стоит рассказать о проектах, то есть о том, с чем, собственно, предстоит работать в программе Pinnacle


Управление слоями

Из книги ArchiCAD. Начали! автора Орлов Андрей Александрович

Управление слоями При манипулировании объектами титров вы могли заметить, что некоторые из них могут отображаться поверх других объектов, накладываясь на них. Все из-за того (или благодаря тому), что при отображении титра соблюдается определенный порядок прорисовки


Управление слоями

Из книги Энциклопедия разработчика модулей ядра Linux автора Померанц Ори

Управление слоями Элементы управления слоями и атрибуты слоев рассмотрим на примере стандартного списка слоев ArchiCAD.Окно управления слоями Layer Settings (Настройки слоя) (рис. 7.1) можно вызвать несколькими способами:? командой Document ? Layers ? Layer Settings (Документ ? Слои ? Настройки


Различия между версиями 2.0 и 2.2

Из книги 300 лучших программ на все случаи жизни автора Леонтьев Виталий Петрович

Различия между версиями 2.0 и 2.2 Я не знаю, что все ядро достаточно хорошо документирует все изменения. В ходе преобразования примеров (или фактически, адаптации изменений Еммануела Папиракиса) я натолкнулся на следующие различия. Я привожу их все здесь вместе, чтобы помочь


Удаленное управление

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Удаленное управление Управляться со своим собственным компьютером умеет не каждый. Ну а если вам вдруг понадобиться изменить что-то на ЧУЖОМ компьютере? Причем находящемся черте-где, возможно даже в другом городе?А это бывает не так уж редко. К примеру, нужно помочь


Управление версиями

Из книги Объектно-ориентированный анализ и проектирование с примерами приложений на С++ автора Буч Гради

Управление версиями Вики-узлы в службах Windows SharePoint реализованы как библиотеки документов, а значит, имеют все функции библиотеки документов, такие как журнал изменений и управление версиями. Следовательно, никакие изменения не теряются безвозвратно. При создании


7.1. Управление и планирование

Из книги Настройка Windows 7 своими руками. Как сделать, чтобы работать было легко и удобно автора Гладкий Алексей Анатольевич

7.1. Управление и планирование Если мы при проектировании опираемся на метод итеративного развития, то важнее всего иметь сильное руководство, способное управлять ходом проекта и направлять его. Слишком много проектов сбились с пути из-за неспособности сосредоточиться


Особенности Windows 7 по сравнению с предыдущими версиями

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

Особенности Windows 7 по сравнению с предыдущими версиями Какие же характерные особенности имеет операционная система Windows 7 по сравнению со своими предшественницами?В первую очередь следует отметить новый пользовательский интерфейс, характеризуемый повышенным удобством


Проблемы совместимости с ранними версиями.

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

Проблемы совместимости с ранними версиями. Пользователи PGP показывают, что в ряде случаев наблюдается несовместимость PGP 5.0 с прежними версиями PGP при шифровании/расшифровке и подписи/проверке файлов, содержащих символы верхней половины кодовой таблицы, соответствующие


4.2. Управление группами

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

4.2. Управление группами Начнем изучение вопроса с создания групп. Что это такое? Допустим, что в вашей сети 1000 пользователей, 500 из которых должны иметь доступ к файлам бухгалтерской отчетности. Как поступить? Можно каждому из 500 пользователей назначить права на нужный файл


4.3. Управление пользователями

Из книги автора

4.3. Управление пользователями Для добавления пользователя используется команда useradd. С ее помощью также можно изменить значения по умолчанию, которые будут присваиваться учетной записи.Команда выглядит следующим образом:useradd параметры имяПараметров очень много,


6.3. Управление пользователями

Из книги автора

6.3. Управление пользователями Для начала разберемся с именами пользователей. Для доступа к серверу Samba используются сведения из системного файла /etc/passwd. Но вы можете завести отдельные записи Samba-сервера, которые будут соответствовать реальным именам, но их можно будет


Управление транзакциями

Из книги автора

Управление транзакциями Необходимо помнить, что любое действие с базой данных происходит в рамках той или иной транзакции. Работа с InterBase основана на явном управлении транзакциями, а поскольку библиотека IBX - это обертка вокруг соответствующих функций InterBase API, то


Миграция между различными версиями InterBase

Из книги автора

Миграция между различными версиями InterBase Карта миграции В этом разделе мы рассмотрим, как осуществить процесс миграции с одной версии InterBase на другую. В таблице 4.6 представлены карта возможных переходов с одной версии InterBase на другую.Под прямой миграцией понимается