001
04.03.2004, 17:50 Uhr
RHBaum
|
Naja, mit dem Thema kann man wirklich Baende fuellen ... :p
mal kurz ....
.h = Header deine funktionsdeklarationen ... die im gegensatz zu definition keinen code erzeugen, sondern nur Signaturen beschreiben ....
lib = statische lib. Wird beim linken zu deinem programm hinzugelinkt. die Funktionen und klassen die du darin aufrufst, muessen natuerlich deinem eigenen code bekannt sein (Signatur = Die Definition der Funktion, also name, aufrufparameter, rueckgabewert, Klassenname - das Symbol = Name der Funktion im context, also mit namespace etc... wichtig den unterschied zu kennen. ) beim linken werden deine Aufrufe in deinem Code mit den Codefragmenten der lib "verbunden" ... das macht der compiler eben ueber symbole und signaturen.
Du musst keinen Header verwenden, du kannst die Funktionen, Klassen alle selber so definieren, wenn nachher Signatur und Symbol ubereinstimmen. Nur wird das keiner machen, weil die Headerdatei ja praktisch auch gleich die schnittstelle zu deiner Lib beschreibt ... Wo sollte man anders die info herbekommen. also dann gleich den Header einbinden.
dll, dynamisch gelinkte bibliothek ... Sprich, die anforderung ist die selbe, nur das eben eine Dll auf anfrage, also zur laufzeit, in den speicher geladen werden soll . Da gibts noch einige besonderheiten zu beachten .... eine dll muss brauch nicht zur compilezeit existieren .... sie wird ja spaeter erst geladen ... ne lib brauchst zur compilezeit ... Deshalb werden dlls auch zur Laufzeit "gesucht". in einer lib sind deine Funktionen statisch verknuepft, sprich die addresse wurde beim compilieren relativ im Code festgelegt. Bei ner dynamischen lib eben nicht. deshalb arbeitest bei einer dll nicht mit funktionen selber , sondern mit funktionspointern, deren adresse du dir aus ner seperaten Mapdatei oder ueber eigene Symbole aus ner map in der dll selber holst. die dll wird natuerlich "per Hand" geladen (LoadLibrary) .
das Handling mit den dlls ist meist doch recht umstaendlich, deshalb werden zu den meisten dlls auch noch libs(also statische Bibos) hinzugeliefert. Du bindest die statische lib ein, und die uebernimmt das ganze management der dll ...usw. Im VC Studio kanns dir solche teile automatisch zur deiner dll mitgenerieren lassen. Je nach intelligenz der statischen bibo bleiben dann die vorteile der dll mehr oder weniger erhalten ...
Hoffe das hilft weiter ...
Ciao ... Dieser Post wurde am 04.03.2004 um 17:52 Uhr von RHBaum editiert. |