Статични вс динамички ДЛЛ учитавање помоћу Делпхија

ДЛЛ (Динамиц Линк Либрари) делује као дељена библиотека функција на које се могу позивати бројне апликације и друге ДЛЛ датотеке. Делпхи вам дозвољава правите и користите ДЛЛ датотеке тако да ове функције можете звати по вољи. Међутим, морате да увезете ове рутине пре него што их можете позвати.

Функције извезене из ДЛЛ-а могу се увести на два начина - или проглашавањем екстерне процедуре или функције (статичке) или директним позивима на ДЛЛ специфичне АПИ функције (динамичке).

Размотримо једноставан ДЛЛ. Испод је код за "цирцле.длл" који извози једну функцију, под називом "ЦирцлеАреа", која израчунава површину круга помоћу датог радијуса:

Једном када добијете цирцле.длл, можете користити извозну функцију "ЦирцлеАреа" из своје апликације.

Статиц Лоадинг

Најједноставнији начин увоза процедуре или функције је декларирање помоћу екстерне директиве:

Ако ову изјаву укључите у део интерфејса јединице, цирцле.длл се учитава једном када се покрене програм. Тијеком извођења програма, функција ЦирцлеАреа доступна је свим јединицама које користе јединицу на којој се налази горња декларација.

instagram viewer

Динамично учитавање

Можете приступити рутини у библиотеци путем директних позива на Вин32 АПИ-је, укључујући ЛоадЛибрари, ФрееЛибрари, и ГетПроцАддресс. Ове функције су декларисане у Виндовс.пасу.

Ево како позвати функцију ЦирцлеАреа користећи динамичко пуњење:

При увозу користећи динамичко учитавање, ДЛЛ се не учитава све до позива у ЛоадЛибрари. Библиотека је истоварена позив у ФрееЛибрари.

Статичким учитавањем учитава се ДЛЛ и извршавају се његови секције за покретање пре него што се изврше одељци за иницијализацију позивне апликације. Ово се преокреће динамичким пуњењем.

Да ли треба да користите статички или динамички?

Ево једноставног прегледа предности и недостатака статичког и динамичког ДЛЛ учитавања:

Статиц Лоадинг

Прос:

  • Лакше за почетника програмера; не "ружно" АПИ позиви.
  • ДЛЛ-ови се учитавају само једном, када се програм покрене.

Против:

  • Апликација се неће покренути ако неки ДЛЛ фајлови недостају или их није могуће пронаћи. Појавиће се порука о грешци као што је ова: „Апликација није успела да се покрене јер није пронађена датотека„ миссинг.длл “. Поновна инсталација апликације може да реши овај проблем ". По дизајну, ДЛЛ налог за претрагу са статичким повезивањем укључује директориј из кога је апликација учитава се, системски директориј, Виндовс директориј и директорији наведени у ПАТХ окружењу променљива. Имајте на уму да би налог за претрагу могао бити различит за различите верзије система Виндовс. Увек очекујте да све ДЛЛ датотеке постоје у директорију где се зове апликација.
  • Користи се више меморије јер су све ДЛЛ датотеке учитане, чак и ако нећете користити неке од функција

Динамично учитавање

Прос:

  • Програм можете покренути чак и ако неке библиотеке које користи нису присутне.
  • Мања потрошња меморије јер се ДЛЛ-ови користе само по потреби.
  • Можете одредити пуни пут до ДЛЛ-а.
  • Може се користити за модуларне апликације. Апликација излаже само (оптерећења) модуле (ДЛЛ-ове) „одобрене“ за корисника.
  • Способност динамичког учитавања и истовара библиотеке основа је додатног система који програмеру омогућава додавање додатне функционалности програмима.
  • Компатибилност уназад са старијим верзијама оперативног система Виндовс у којима системске ДЛЛ датотеке можда не подржавају исте функције или се подржавају на исти начин. Прво откривање верзије оперативног система Виндовс, а затим динамичко повезивање на основу онога што ради ваша апликација, омогућава вам више подршке верзије оперативног система Виндовс и пружају решења за старије ОС (или у најмању руку грациозно деактивирање функција које не можете подршка.)

Против:

  • Захтијева више кода, што није увек лако почетнику програмеру.
instagram story viewer