003
15.09.2003, 13:30 Uhr
virtual
Sexiest Bit alive (Operator)
|
Vielleicht noch was zu den Inhalten der einzlnen Dateien: .h Datei enthalten die Deklarationen der Funktionen, dh da steht dann Drin, wie die Funktion aufrzurufen ist und was sie zurückgibt. Wenn Du eine Funktion mit folgender Definition hast:
C++: |
size_t strlen(const char* s) { const char* p = s; while (*p) ++p; return p-s; }
|
So wollte im Header stehen
C++: |
extern size_t strlen(const char* s);
|
Damit jemand, der die .h mittels include einbindet (denn dafür ist sie ja da) vom Compiler auch kräftig beschimpft werden kann, wenn er der Funktion was falsches übergibt oder was falsches zurück haben will. In der .dll steht dann die Definition drin, eben in Maschinencode die Definition der Funktion. Bei der .lib datei handelt es sich um eine Sogenannte Importlibrary. Windows ist was die Verwendung von DLLs (Dynamische Libararies) angeht ein wenig fimischig und erfordert seitens des programms, welches die Funktionen der DLL aufrufen will, spezielle "Stubs", also Funktionen, die den Aufruf der eigentlich interessaten Funktion überhaupt erst möglich machen. Diese Funktionen stehen in der ImportLibrary drin. Diese .lib Datei sind Statische Library und machen im wesentlich nichts anderes als die entsprechenden Funktionen der DLL aufrufen. Ob dieses Umständliche DLL und LIB Gedönse auf eine unaufgeräumte Vergangenheit von Windows zurückzuführen ist oder auf Boshaftigkeit der Windowsentwickler zurückzuführen ist, kann ich Dir nicht sagen, andere System kommen jedenfalls ohne solchen Quatsch klar. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 15.09.2003 um 13:31 Uhr von virtual editiert. |