Announcement

Collapse
No announcement yet.

Vor- und Nachteil statischer einbindung einer DLL?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vor- und Nachteil statischer einbindung einer DLL?

    Hallo,

    Wurde oft diskutiert das Thema. Jedoch hab ich eines nicht ganz versanden:

    In meinen Projekten habe ich nach und nach für bestimmte Aufgaben allgemein verwendbare Funktionen entwickelt. Diese möchte ich nun als DLL auslagern.
    Wie das geht, habe ich bereits in einigen Tutorials erfahren.

    Nur: was ist der Vorteil einer statischen Einbindung der DLL?
    Soweit ich das verstanden habe, fügt man am Ende die entsprechende .lib dem Projekt zu, wobei dan beim Linken die DLL in die .exe gelinkt wird.
    Dadurch habe ich doch aber nichts gewonnen, oder???
    Dann hätte ich von der Effizienz doch auch alle Funktionen wieder im Projekt selber einbauen können?

    Da hab ich vielleicht etwas nicht so ganz verstanden?
    Wär schön, wenn mich jemand aufklären könnte?

    Vielen Dank
    Arne
    PHP rocks!
    Eine Initiative der PHP Community

  • #2
    Werden die Funktionen in anderen Anwendungen verwendet? Haben die DLL's gleiche Schnittstelle (Plugin-System).

    Falls beide Fragen mit nein Beantwortet werden bringt dir weidere DLL's nix (außer die berühmte DLL-Hölle).

    Comment


    • #3
      Ja, wie gesagt: Die Funktionen selber verwende ich schon 1:1 in verschiedenen Projekten.
      Deshalb dachte ich ja, es wäre sinnvoll, diese mal als DLL auszulagern.
      PHP rocks!
      Eine Initiative der PHP Community

      Comment


      • #4
        Hallo Arne,

        das Auslagern von Programmteilen ist eine durchaus gängige Praxis. Ob dieses nun in einer DLL geschieht, in einem COM Objekt oder in einem Assembly ist gängige Praxis.
        Neben der besseren Wartbarkeit des Codes, man braucht ggf. nur die DLL zu ändern und zu verteilen und nicht die gesamte entsprechend große Anwendung, wird die Anwendung ja auch deutlich kleiner und damit auch schneller geladen. Die DLL wird nur dann geladen, wenn sie gebraucht wird und dann wieder aus dem Speicher entfernt. Wenn die DLL statisch gelinkt wird, sorgt das OS dafür wann geladen und wieder aus dem Speicher entfernt wird. Wenn Du das selber festlegen möchtest lade die DLL dynamisch. Der Begriff DLL Hölle stammt übrigens nicht von den "klassischen" DLL's sondern in Verbindung mit COM Objekten, deren Schnittstellen sich von Version zu Version geändert haben und gerade MS als Erfinder von COM mit "guten" Beispiel vorangegangen sind.
        Also setze DLL's ein und nicht nur, wenn Du diese für mehrere Projekte verwendest. Jedes OS besteht aus einer Vielzahl von DLLs oder LIB's. Das gleiche findest Du in nahezu allen Bibliotheken: QT, WxWidget, Boost usw.

        Beste Grüße

        Gerhard

        Comment


        • #5
          Danke für die ausführliche Erklärung, Gerhard!

          Kann es sein, daß das statische Linken nur Sinn macht, wenn im Projektmanager die entsprechenden Einstellungen (z.B. Dynamische RTL) gesetzt sind?
          PHP rocks!
          Eine Initiative der PHP Community

          Comment


          • #6
            http://www.marquardtnet.info/cecke/q...quicky_16.html
            Christian

            Comment


            • #7
              Chriiistiiiaaan...
              Auf Deiner Seit habe ich auch gesucht, bevor ich diesen Thread geschrieben habe. Aber gefunden habe ich Blindfisch nix...

              Naja, die Einstellungen selber kenne ich ja auch, aber der eine Satz in Deinem Link ist natürlich eine nützliche Info für mich:
              ... Das betrifft aber nicht Klassen und Funktionen die aus selbst geschriebenen DLL's genutzt werden.
              Danke!
              PHP rocks!
              Eine Initiative der PHP Community

              Comment

              Working...
              X