Ett DLL (Dynamic Link Library) fungerar som ett delat bibliotek med funktioner som kan begäras av många applikationer och andra DLL-filer. Delphi låter dig skapa och använda DLL-filer så att du kan ringa dessa funktioner när du vill. Du måste dock importera dessa rutiner innan du kan ringa dem.
Funktioner som exporteras från en DLL kan importeras på två sätt - antingen genom att deklarera en extern procedur eller funktion (statisk) eller genom direktanrop till DLL-specifika API-funktioner (dynamiska).
Låt oss överväga en enkel DLL. Nedan är koden för "cirkel.dll" som exporterar en funktion, kallad "CircleArea", som beräknar en cirkelyta med den angivna radien:
När du har cirkel.dll kan du använda den exporterade "CircleArea" -funktionen från din applikation.
Det enklaste sättet att importera en procedur eller funktion är att förklara det med det externa direktivet:
Om du inkluderar denna deklaration i gränssnittsdelen av en enhet laddas cirkel.dll en gång när programmet startar. Under hela körningen av programmet är funktionen CircleArea tillgänglig för alla enheter som använder enheten där ovanstående deklaration är.
Du kan komma åt rutiner i ett bibliotek genom direktsamtal till Win32 API, inklusive Loadlibrary, FreeLibrary, och GetProcAddress. Dessa funktioner deklareras i Windows.pas.
Så här ringer du CircleArea-funktionen med dynamisk lastning:
När du importerar med dynamisk lastning laddas inte DLL förrän samtalet till LoadLibrary. Biblioteket lossas av samtalet till FreeLibrary.
Med statisk laddning laddas DLL och dess initialiseringsavsnitt körs innan anropsapplikationens initialiseringsavsnitt körs. Detta vänds med dynamisk belastning.
Här är en enkel titt på fördelar och nackdelar med både statisk och dynamisk DLL-laddning:
Statisk lastning
Fördelar:
Nackdelar: