DLL Verständnisproblem
-
Hallo,
habe heut abend in meinem Buch das kleine Kapitel mit den DLL Dateien durchgelesen.
In dem Buch wird eine DLL Datei erstellt die eine (Start)Funktion mit dem Namen DllMain(...) hat.
Im Internet(http://www.resourcecode.de/view.php?id=776) habe ich mal ein Tuorial gefunden das erklärt wie man eigene DLL Dateien erstellen kann. In diesem Tutorial wird keine DllMain(...) Funktion benötigt, nun wollte ich mal wissen wo hier der unterschied besteht???
-
Die DllMain wird vom KLassenassistenten erstellt, das wird im Tutorial nicht gezeigt.
-
Und was für ein Unterschied macht dies dann???
-
Die DllMain wird immer benötigt.
Das Tutorial zeigt nur nicht wann diese angelegt wird.
Also: kein Unterschied.
-
Achso, also wenn ich eine DLL Datei über den Assistenten erstelle wird diese DllMain automatisch eingefügt. Wenn ich diese per Hand erstelle muss ich darauf achten das ich diese DllMain per Hand erstelle.
Hoffe ich habe dies jetzt richtig so verstanden ?!
-
yep, 100%
Die Funktion muß (intern) nicht unbedingt DllMain heißen, man kann beim Linken auch angeben, daß eine andere Funktion diese Rolle übernimmt ("Entry Point" der DLL). Aber Irgendeine solche Funktion muß da sein.
-
peterchen ich glaube du liegst falsch. Mir ist es gerade gelungen eine DLL ohne DllMain anzulegen.
Einfach ein leeres DLL Projekt angelegt und dann hab ich eine C++ Datei angelegt und das einzige was ich reingeschrieben hab war:
__declspec(dllexport) void foo() { }
Und er hat eine DLL daraus kompiliert. Ohne Linkerfehler.
Oder die wird heimlich generiert vom Compiler. Aber nicht vom Assistenten.
-
Mhh, ich dachte jetzt das dies dann automatisch vom Compiler gemacht wird. Jetzt bin ich wieder verwirrt...