Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


”правление верси€ми 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.

–езюме

—истема управлени€ пам€тью Windows предоставл€ет следующие возможности:

Х »спользование средств Windows, осуществл€ющих управление кучей, а также обработчиков исключений дл€ обнаружени€ и обработки ошибок, возникающих при распределении пам€ти, значительно упрощает логическую организацию.

Х »спользование нескольких независимых куч обладает р€дом преимуществ по сравнению с распределением пам€ти из одной кучи.

Х ћетоды отображени€ файлов, доступные в UNIX, но не предоставл€емые библиотекой —, обеспечивают обработку файлов в пам€ти, что было проиллюстрировано несколькими примерами. ќтображение файлов в пам€ти осуществл€етс€ независимо от управлени€ кучей и упрощает решение многих задач программировани€. ѕреимущества использовани€ отображени€ файлов подтверждаютс€ данными о достигаемом за счет этого повышении производительности, приведенными в приложении ¬.

Х DLL €вл€ютс€ важным специальным случаем отображени€ файлов и могут загружатьс€ либо €вным, либо не€вным образом. DLL, предназначенные дл€ использовани€ многими приложени€ми, должны предоставл€ть информацию о версии библиотеки.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-09-20; ћы поможем в написании ваших работ!; просмотров: 603 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ќачинать всегда стоит с того, что сеет сомнени€. © Ѕорис —тругацкий
==> читать все изречени€...

2053 - | 1845 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.011 с.