Frage zu Library, DLL und drum herum



  • Hallo,

    ich möchte aus reiner Neugierde gerne begreifen wie das alles zusammen hängt
    *bitte nicht schlagen, evtl sind meine Fragen auch total dämlich*...

    Man kann div. Library in das eigene Projekt einbinden. Aber muss dazu
    dann auch immer eine DLL vorhanden sein? Ich meine, wie werden diese Lib-
    Dateien behandelt und die Funktionen auf Fremdsystemen innerhalb der
    Anwendung verfügbar gemacht? Oder ist eine Library nur ein generelles Bindeglied zwischen
    den Lib.cpp und Lib.h-Dateien? Warum wird beim Erzeugen einer DLL offenbar
    auch immer eine Lib mit gebildet? Braucht man zwingend beides?

    Wie würde man eigene Funktionen, die man aber nicht als Quellcode beereitstellen
    möchte, dann an andere Entwickler weitergeben, damit diese mit den enthaltenen
    Funktionen arbeiten können, aber nicht die eigene Arbeit (Quellcode) klauen können?
    Geht sowas dann nur über DLL-Dateien?

    Ich würde es wie gesagt gerne genauer verstehen und es wäre nett wenn sich
    jemand von euch die Zeit dazu nehmen könnte das verständlich zu beschreiben.


  • Mod

    Es gibt statische LIBs. Das sind Libraries, die den Objekt Code enthalten und bei denen dann dieser Objekt Codein die das Ziel (EXE/DLL) gelinkt wird.
    Es gibt reine Link-Librraies, die nur die Einsprungpunkte in die DLLs verwalten und selbst keinen Code beinhalten.

    Zwei unterschiedliche Arten von Libraries!



  • Also entweder DLL mit Lib bekannt machen, oder Lib mit ganzem Quellcode darin reinkompilieren.
    Dritte Variante wäre dann LoadLibrary und nur eine DLL, wo man aber wissen muss, wie die
    Funktionen heißen (im Export, sofern überhaupt exportiert).
    Richtig verstanden? 😃


  • Mod

    Deine dritte Variante ist mit der ersten identisch.
    Es ist nur ein Unterscheid wie man die DLL lädt: implizit oder explizit!



  • Ok, also muss bei statischem linken die DLL beim Kompilieren auch vorhanden sein und ansonsten eben nicht, bzw. würde eine Meldung kommen, dass LoadLibrary
    fehl schlägt (im Programmablauf). Ich danke dir für die Erklärung. 👍
    Ich war nur verwundert, das man auch immer eine Lib-Datei für das statische Linken braucht.


Log in to reply