001
22.11.2018, 21:27 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat: |
Will ich nun diese lib in eine Exe verwendet bzw. linken, brauche ich nicht nur die lib sonder auch die ganzen header files. Aber warum???
|
weil der Compiler die Funktionen sonst nicht kennt, die in der *.lib drin sind. Ausserdem kann er keine Typenüberprüfungen vornehmen, bzw. ganz allgemein feststellen, ob eine Funktion auch richtig aufgerufen wird; - also überprüfen, ob die Parameter übereinstimmen.
Zitat: |
sind die Header Informationen nicht auch in den mit drin Lib drin?
|
Im Prinzip ja, aber die Dateien werden vom Compiler nicht angerührt, wenn er ein Programm übersetzt. Den Compiler interessieren nur die Header-Dateien. Wenn er die nicht bekommt und Du eine Funktion aus der Lib aufrufst, wird er Dir das mit 'ner Fehlermeldung quittieren. Erst der Linker fügt den vom Compiler erzeugten Code mit dem Code aus Bibliotheken zusammen und baut daraus schliesslich die exe-Datei.
Zitat: |
Zudem sind die "Release" Libs viel größer als die "Debug" libs .. warum is das so?
|
Gute Frage, das weis ich auch nicht. - Ich könnte mir allerdings vorstellen, dass in den Linkeroptionen von Visual C++ voreingestellt ist, dass er noch jede Menge weiterer Dateien mit einfügt, die man für ein bestimmtes Projekt eigentlich gar nicht braucht. Aber das ist jetzt wie gesagt geraten.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |