Hvad bruger man DLL til?

Tags:    c++

Hej Udviklere.

Jeg vil gerne vide hvad og hvordan DLL filer bliver brugt.

Tak på forhånd



Hej Udviklere.

Jeg vil gerne vide hvad og hvordan DLL filer bliver brugt.

Tak på forhånd


Tja, generelt anses de jo for at være udvidelser til applikationer, hvilket også gives af navnet Dynamically Link Library (DLL).
Lidt mere info om dem kan ses her:
http://en.wikipedia.org/wiki/Dynamic-link_library

Altså for mit vedkommende benytter jeg DLL filer til at tilføje udvidelser til mine eksisterende projekters moduler og til evt. at kæde projekternes forskellige moduler sammen (altså adskille for eksempel grafik, lyd og fysik modulerne i flere DLL-filer).
Når du skal opdatere en applikation giver DLL-filer også fordele, idet man her måske kun skal opdatere en DLL-fil af mindre størrelse i stedet for at skulle opdatere program-filen af meget større størrelse, hvilket sparer slutbrugeren for at skulle hente en masse unødvendig data (især nyttigt for modem-brugere).



De giver desuden mindre kompileringstider, da man jo derfor heller ikke behøver at kompilere hele applikationen igen, men måske kun en mindre del af den, altså den der vedrører et enkelt modul.

Udover det er der jo godt nok et ekstra kald/hop (i processorens dataforstand) forbundet med at benytte funktioner fra DLL-filer, men med vor tids processorer er disse praktisk talt ubetydelige i forhold til resten af applikationen.
Hvis du gerne vil se, at dette holder stik, kan du jo for eksempel tage et kig på Ogre3D, som er et grafik modul af højere niveau end OpenGL/Direct3D:
http://ogre3d.org/



Kasper spurgte også om Hooks, hvis man vil lave windowshooks er det i nogle tilfælde nødvendigt med en hook.

For mig at se er den store fordel ved DLL'er at man kan dele kode mellem flere programmer.



Hejsa og tak for svarene.

Kan i give mig nogle eksempler på DLL benyttelse?

Tak på forhånd



Der er en meget kort guide her:
http://damb.dk/dllfiles.php

Nederst på siden er der et link til en .zip fil der indeholder et komplet eksempel.



Sidst men ikke mindst er det vigtigt at pointere at en dll og en .NET assembly IKKE er det samme selvom begge typer har ".dll" som extension.

- En DLL som vi kender den fra C++ verdenen har eksponerede funktioner som kan kaldes af andre programmer.
- En assembly bruger ikke det samme princip og har ikke disse eksponerede funktioner.

Det er to vigtige egenskaber man skal være opmærksom på specielt hvis man fx skal integrerer .NET verdenen (managed C++/CLI kode) med native kode.

Sidder man i C# kode (som også er managed) så de eneste typer af referencer man kan tilføje assemblies og COM objekter. Ønsker man derfor at tilføje en C++ DLL med eksponerede funktioner til et sådan projekt, så man man lave et COM interface til denne. Et sådant COM interface laves naturligvis i C++



Indlæg senest redigeret d. 02.10.2006 23:08 af Bruger #10448
t