Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Engine-Problem

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 ] [ 2 ] > 3 <
020
10.03.2006, 02:35 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von Marco15:
Was is denn der Unterschied?

*.lib-Dateien sind sogenannte "Statische Laufzeitbibliotheken". Aus diesen Bibliotheken holt der Linker den Code für Funktionen wie beispielsweise printf oder gets, und bindet ihn ins Programm ein. (In ungünstigen Fällen auch die ganze Datei, wodurch das Programm unnötig gross wird.)

Im Gegensatz dazu ist eine DLL eine "Dynamische Laufzeitbibliothek". Diese werden erst dann geladen, wenn das Programm schon läuft, d.h. zur Laufzeit. Diese Bibliotheken können in den Speicher geladen werden, müssen aber nicht. Deshalb nennt man sie "dynamisch". Der Code aus einer statischen Laufzeitbibliothek wird dagegen immer geladen, wenn ein Programm gestartet wird.

Diese dynamischen Laufzeitbibliotheken kann man auch selbst erstellen, wenn ein Programm sehr umfangreich wird. Ein Beispiel dafür wäre eine Bildverarbeitung. Da gibt es Funktionen (Filter) zum Konturenschärfen, Kontraste verändern oder ähnliches, die man nicht immer braucht. Wenn diese Funktionen in einer DLL realisiert sind, genügt es, wenn sie erst dann in den Speicher geholt werden, wenn der/die Anwender/in sie benutzen will. Werden sie nicht benötigt, können sie auch auf der Festplatte bleiben, und der Speicherplatz steht für andere Dinge zur Verfügung.


Zitat:
Und warum braucht jeder Compiler andere Bibliotheksdateien?

Das musst Du die Hersteller der Compiler fragen. Das dürfte zum Teil technische Gründe haben, hat aber wohl eher damit zu tun, das jeder Hersteller seine eigenen Vorstellungen davon hat, wie etwas zu realisieren ist. Aber genau weis ich das auch nicht.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
10.03.2006, 09:47 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Das ist aber auch nur teilweise komplett, weil es als .lib nicht nur die Dateien gibt die kompletten Code enthalten. Sondern auch solche die wie Oliver gesagt hat dem Linker sagen in welcher DLL er die entsprechende Funktion findet.
D.h. wenn du z.B. eine Windows API Funktion benutzen willst dann gehst du nicht hin und lädst die DLL selbst um dir dann einen entsprechenden Funktionszeiger zu holen. Sondern du gibst dem Linker die entsprechende .Lib an und der kümmert sich dann um alles weitere. Deshalb wird zur Laufzeit aber trotzdem die DLL benötigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
10.03.2006, 11:11 Uhr
Hans
Library Walker
(Operator)


@Guybrush: Ja gut, das wusste ich auch noch nicht. Habe es den Hilfedateien von Borland aber auch noch nicht so genau entnommen...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ C / C++ (WinAPI, Konsole) ]  


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: