Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dll,lib,h

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.03.2004, 14:03 Uhr
~Michael L.
Gast


Hi,
also ich seh langsam nicht mehr durch.

Ich versuch mich bissel in ind das Thema DLL ein zu arbeiten. Nun steht bei den Artikeln darüber das man ein Header Datei benötigt. Ich habe aber schon ein Projekt erstellt wo mit CreateInstance gearbeitet wird, und da habe ich keine .h zu der DLL. Auch frage ich mich, was der Unterschied zwischen DLL und Lib ist?

Hat da jemand ein tut oder ein Bsp für (mit doku) wie ich DLL ganz einfach erstelle und nutze? Das Problem ist, dass ich davon echt wenig Ahnung habe und die Tuts die teilweise vorraus setzen.

Sonst würde ich mich auch über eine kleine Aufklärung freuen

thx und mfg Michael L.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.06.2006, 18:28 Uhr
Quenten



danke, mir hats weitergeholfen, wenn der Beitrag auch schon asbach ist, egal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.06.2006, 18:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, nochwas zur dll, die meisten dlls werden nicht extra beim programmstart in den speicher geladen, im endeffekt lassen die meisten betriebsysteme häufigbenutzte "dlls" im speicher liegen (macht selbst linux mit seinen so's) das spart ladezeit der "dll" und neuverknüpfen der evtl aus einer weiteren dll stammenden funktionen usw

jede anwendung kriegt dann nur einen adressraum für die dll zugeteilt, in dem dann natürlich die referenzen zu den dll-funktionen stehen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: