Fragen Header-Files und kompilierte Libs



  • Worin besteht im großen und ganzen der Unterschied zwischen den Header-Files und
    den bereit kompilierten Libs?Außer, dass man beim einen keinen Quellcode mehr sehen kann?

    Und wie kann ich selbst solche kompilierten Libs erstellen?



  • In LIB-Dateien stecken, wie Du selbst erwähnst, kompilierte Funktionen. Es ist daher für das Erstellen eines lauffähigen Programms nicht mehr nötig, diese zu kompilieren, sondern man muß sie nur noch dazulinken. Außerdem wird auch der wertvolle Quellcode nicht preisgegeben, wenn man eine LIB verkauft! LIB-Dateien werden ähnlich erstellt (man muß nur eine kleine Linker-Option umstellen) wie normale Programme, nur haben sie keine main()-Funktion. Der Benutzer - Du! - hat dann auf alle programmglobalen (nicht als static deklarierten) Funktionen Zugriff.

    In h-Dateien stehen Deklarationen, die man gemeinsam in mehreren Quellcode-Dateien - oder eben auch in LIBs - braucht. Steckt beispielsweise in KROESUS.LIB eine Funktion void MachWas(double), so muß der Benutzer der LIB - also Du - davon ja erstens auch wissen und zweitens brauchst Du die genaue Signatur der Funktion. Beide Aufgaben werden von der Headerdatei erledigt. In h-Dateien stehen nur Deklarationen, aber KEIN Quellcode, da man diesen ja nur ein einziges Mal und nicht in mehreren Übersetzungseinheiten benötigt!!

    Hoffe, das hilft soweit erst mal.
    Grüße, Krösus



  • SirLant schrieb:

    Und wie kann ich selbst solche kompilierten Libs erstellen?

    Aus der FAQ 🙂



  • Danke, jetzt verstehe ich auch wieso ich schon oft davon gelesen habe, dass in
    den Header-Files die Prototypen sind, aber nie was über die ganzen Funktionen.
    Dass da in der FAQ ein Eintrag ist wusste ich nicht, mir fiel das heute Morgen ein
    und ich hatte noch kurz Zeit um den PC anzumachen 😃


Log in to reply