static lib erstellen



  • Hallo!

    Ich hab ein super Tutorial von MS gefunden wie man aus einer Header und cpp Datei eine static Lib erstellt.

    Jetzt meine Frage: Wenn ich 25 Header und cpp-Dateien habe, kann ich daraus immer noch genau so einfach eine lib erstellen? Falls ja, müsste ich dann alle Header mit ausliefern damit der Anwender alles benutzen kann? Hieße das im Umkehrschluß wenn ich dem Benutzer nur eine Header-Datei gebe, dann kann er auch nur diese Funktionalitäten nutzen?

    Letzte Frage:
    Mit dem Visual Studio 2008 Prof erstellte Libs kann ich nur mit eben diesem Tool nutzen, für 2005er müsste ich mit dem 2005er Studio eigene Libs erstellen usw.?

    Danke 🙂



  • Wenn ich 25 Header und cpp-Dateien habe, kann ich daraus immer noch genau so einfach eine lib erstellen?

    Ja.

    müsste ich dann alle Header mit ausliefern damit der Anwender alles benutzen kann?

    Ja.

    Hieße das im Umkehrschluß wenn ich dem Benutzer nur eine Header-Datei gebe, dann kann er auch nur diese Funktionalitäten nutzen?

    Jein.
    Wenn sich der Empfänger die Deklarationen der Header-Dateien "herleiten" kann, kann er das natürlich auch nutzen. Die notwendigen Informationen sind prinzipiell in der lib enthalten, auch wenn - glaub ich - kein Tool zum extrahieren mitgeliefert wird.

    Mit dem Visual Studio 2008 Prof erstellte Libs kann ich nur mit eben diesem Tool nutzen, für 2005er müsste ich mit dem 2005er Studio eigene Libs erstellen usw.?

    Hm. Ob die Libs zwischen den Versionen kompatibel sind, weiß ich nicht - müßte man ausprobieren. Prinzipiell zu erwarten, aber nicht garantiert.

    Etwas anderes ist aber ein problem: Compiler-Optionen.
    Es gibt eine Menge Optionen, die direkt oder indirekt Auswirkungen auf den erzeugten Code haben - und die entscheiden, ob deine Lib auch wirklich verwendet werden kann.

    Da sind zunächst die Bindungen an die C/C++ Laufzeitbibliothek, dafür gibt es verschiedene Einstellungen (Debug/Release, Single/MultiThreaded, CRT statisch/dynamisch binden, single threaded ist in VS2008 weggefallen), die in verschiedenen Kombinationen gesetzt sein können.

    Dazu kommen verschiedene Einstellungen für die Laufzeit- und andere abhängige Bibliotheken - z.B. Unicode/ANSI/MBCS.

    Des weiteren C++ - Compilereinstellungen wie Exception Handling, Zeiger auf virtuelle Funktionen usw.

    Fazit:
    Libs sind OK, um inkrementelle Builds zu unterstützen. Ein "Endnutzer" benötigt aber die Quellen, um die Bibliothek mit zu seinem Projekt passenden Einstellungen neu kompilieren zu können. Zum "closed-source-Vertrieb" eignen sich libs daher nicht - leider. Da helfen nur DLLs weiter, und die haben halt wieder ihre eigenen Probleme.



  • kannste mal den Link zum Tutorial Posten? Würde mir das gerne mal anschauen.
    Danke!


Anmelden zum Antworten