Erstellen und Verwenden einer statischen Bibliothek (C++)

Aktualisiert: November 2007

Als nächsten Bibliothekstyp erstellen Sie eine statische Bibliothek (LIB). Die Verwendung statischer Bibliotheken stellt eine gute Möglichkeit zur Wiederverwendung von Code dar. Anstatt die gleichen Routinen in jedem von Ihnen erstellten Programm erneut zu implementieren, schreiben Sie die Routinen einmal und verweisen darauf in allen Anwendungen, die diese Funktionen benötigen.

In dieser exemplarischen Vorgehensweise werden folgende Themen behandelt:

  • Erstellen eines neuen Projekts für eine statische Bibliothek

  • Hinzufügen einer Klasse zur statischen Bibliothek

  • Erstellen einer Anwendung, die auf die statische Bibliothek verweist

  • Verwenden von Funktionen der statischen Bibliothek in der Konsolenanwendung

  • Ausführen der Anwendung

Vorbereitungsmaßnahmen

In diesem Thema wird davon ausgegangen, dass Sie die Grundlagen der Programmiersprache C++ beherrschen. Wenn Sie gerade die ersten Schritte beim Erlernen von C++ machen, empfehlen wir "C++ Beginner's Guide" von Herb Schildt, online verfügbar unter https://go.microsoft.com/fwlink/?LinkId=115303.

So erstellen Sie ein neues statisches Bibliotheksprojekt

  1. Wählen Sie im Menü Datei die Option Neu und anschließend Projekt... aus.

  2. Wählen Sie im Bereich Projekttypen unter Visual C++ die Option Win32 aus.

  3. Wählen Sie im Bereich Vorlagen die Option Win32-Konsolenanwendung aus.

  4. Wählen Sie einen Namen für das Projekt aus, z. B. MathFuncsLib, und geben Sie ihn in das Feld Name ein. Wählen Sie einen Namen für die Projektmappe aus, z. B. StaticLibrary, und geben Sie ihn in das Feld Projektmappenname ein.

  5. Klicken Sie auf OK, um den Win32-Anwendungs-Assistenten zu starten. Klicken Sie auf der Seite Übersicht des Dialogfelds Win32-Anwendungs-Assistent auf Weiter.

  6. Wählen Sie auf der Seite Anwendungseinstellungen des Win32-Anwendungs-Assistenten unter Anwendungstyp die Option Statische Bibliothek aus.

  7. Deaktivieren Sie auf der Seite Anwendungseinstellungen des Win32-Anwendungs-Assistenten unter Zusätzliche Optionen das Kontrollkästchen Vorkompilierte Header.

  8. Klicken Sie auf Fertig stellen, um das Projekt zu erstellen.

So fügen Sie der statischen Bibliothek eine Klasse hinzu

  1. Um eine Headerdatei für eine neue Klasse zu erstellen, wählen Sie im Menü Projekt die Option Neues Element hinzufügen... aus. Das Dialogfeld Neues Element hinzufügen wird angezeigt. Wählen Sie im Bereich Kategorien unter Visual C++ die Option Code aus. Wählen Sie im Bereich Vorlagen die Option Headerdatei (.h) aus. Wählen Sie einen Namen für die Headerdatei aus, z. B. MathFuncsLib.h, und klicken Sie auf Hinzufügen. Eine leere Datei wird angezeigt.

  2. Fügen Sie eine einfache Klasse mit dem Namen MyMathFuncs hinzu, die zur Ausführung der geläufigen mathematischen Operationen wie Addition, Subtraktion, Multiplikation und Division dient. Der Code sollte etwa folgendermaßen aussehen:

    // MathFuncsLib.h
    
    namespace MathFuncs
    {
        class MyMathFuncs
        {
        public:
            // Returns a + b
            static double Add(double a, double b);
    
            // Returns a - b
            static double Subtract(double a, double b);
    
            // Returns a * b
            static double Multiply(double a, double b);
    
            // Returns a / b
            // Throws DivideByZeroException if b is 0
            static double Divide(double a, double b);
        };
    }
    
  3. Um eine Quelldatei für eine neue Klasse zu erstellen, wählen Sie im Menü Projekt die Option Neues Element hinzufügen... aus. Das Dialogfeld Neues Element hinzufügen wird angezeigt. Wählen Sie im Bereich Kategorien unter Visual C++ die Option Code aus. Wählen Sie im Bereich Vorlagen die Option C++-Datei (.cpp) aus. Wählen Sie einen Namen für die Quelldatei aus, z. B. MathFuncsLib.cpp, und klicken Sie auf Hinzufügen. Eine leere Datei wird angezeigt.

  4. Implementieren Sie die Funktionalität von MyMathFuncs in der Quelldatei. Der Code sollte etwa folgendermaßen aussehen:

    // MathFuncsLib.cpp
    // compile with: /c /EHsc
    // post-build command: lib MathFuncsLib.obj
    
    #include "MathFuncsLib.h"
    
    #include <stdexcept>
    
    using namespace std;
    
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {
            return a + b;
        }
    
        double MyMathFuncs::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double MyMathFuncs::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double MyMathFuncs::Divide(double a, double b)
        {
            if (b == 0)
            {
                throw new invalid_argument("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  5. Um aus dem Projekt eine statische Bibliothek zu erstellen, wählen Sie im Menü Projekt das Projekt MathFuncsLib und dann die Option Eigenschaften... aus. Wählen Sie im linken Bereich unter Konfigurationseigenschaften die Option Allgemein aus. Ändern Sie im rechten Bereich den Konfigurationstyp in Statische Bibliothek (.lib). Klicken Sie auf OK, um die Änderungen zu speichern.

    Hinweis:

    Beim Erstellen über die Befehlszeile müssen Sie das Programm in zwei Schritten erstellen. Kompilieren Sie den Code zunächst mit Cl.exe unter Verwendung der /c-Compileroption (cl /c /EHsc MathFuncsLib.cpp). Dadurch wird eine Objektdatei mit dem Namen MathFuncsLib.obj erstellt. Weitere Informationen finden Sie unter /c (Kompilieren ohne Verknüpfen). Verknüpfen Sie im zweiten Schritt den Code mithilfe des Bibliothek-Managers Lib.exe (lib MathFuncsLib.obj). Dadurch wird die statische Bibliothek MathFuncsLib.lib erstellt. Weitere Informationen über den Bibliothek-Manager finden Sie unter LIB-Referenz.

  6. Kompilieren Sie die statische Bibliothek, indem Sie im Menü Erstellen die Option Projektmappe erstellen auswählen. Dadurch wird eine statische Bibliothek erstellt, die in anderen Programmen verwendet werden kann.

So erstellen Sie eine Anwendung, die auf die statische Bibliothek verweist

  1. Um eine Anwendung zu erstellen, die auf die soeben erstellte statische Bibliothek verweist und diese verwendet, wählen Sie im Menü Datei die Option Neu und anschließend Projekt....

  2. Wählen Sie im Bereich Projekttypen unter Visual C++ die Option Win32 aus.

  3. Wählen Sie im Bereich Vorlagen die Option Win32-Konsolenanwendung aus.

  4. Wählen Sie einen Namen für das Projekt aus, z. B. MyExecRefsLib, und geben Sie ihn in das Feld Name ein. Wählen Sie in der Dropdownliste neben Projektmappe die Option Hinzufügen aus. Dadurch wird das neue Projekt in dieselbe Projektmappe eingefügt, in der sich auch die statische Bibliothek befindet.

  5. Klicken Sie auf OK, um den Win32-Anwendungs-Assistenten zu starten. Klicken Sie auf der Seite Übersicht des Dialogfelds Win32-Anwendungs-Assistent auf Weiter.

  6. Wählen Sie auf der Seite Anwendungseinstellungen des Win32-Anwendungs-Assistenten unter Anwendungstyp die Option Konsolenanwendung aus.

  7. Deaktivieren Sie auf der Seite Anwendungseinstellungen des Win32-Anwendungs-Assistenten unter Zusätzliche Optionen das Kontrollkästchen Vorkompilierte Header.

  8. Klicken Sie auf Fertig stellen, um das Projekt zu erstellen.

So verwenden Sie Funktionen der statischen Bibliothek in der Konsolenanwendung

  1. Nach dem Erstellen einer neuen Konsolenanwendung wird vom Assistenten ein leeres Programm für Sie erstellt. Die Quelldatei erhält denselben Namen, den Sie zuvor für das Projekt ausgewählt haben. In diesem Beispiel erhält die Quelldatei den Namen MyExecRefsLib.cpp.

  2. Um die in der statischen Bibliothek erstellten mathematischen Routinen zu verwenden, müssen Sie auf die Bibliothek verweisen. Wählen Sie dazu im Menü Projekt die Option Verweise... aus. Erweitern Sie im Dialogfeld Eigenschaftenseiten den Knoten Allgemeine Eigenschaften, und wählen Sie Verweise aus. Wählen Sie dann die Schaltfläche Neuen Verweis hinzufügen... aus. Weitere Informationen zum Dialogfeld Verweise… finden Sie unter Framework und Verweise, Allgemeine Eigenschaften, Dialogfeld '<Projektname>-Eigenschaftenseiten'.

  3. Das Dialogfeld Verweis hinzufügen wird angezeigt. Dieses Dialogfeld listet alle Bibliotheken auf, auf die Sie verweisen können. Auf der Registerkarte Projekt werden alle Projekte in der aktuellen Projektmappe und sämtliche darin enthaltenen Bibliotheken aufgelistet. Wählen Sie auf der Registerkarte Projekte das Projekt MathFuncsLib aus. Klicken Sie auf OK. Weitere Informationen zum Dialogfeld Verweis hinzufügen finden Sie unter Dialogfeld "Verweis hinzufügen".

  4. Um auf die Headerdateien der statischen Bibliothek zu verweisen, müssen Sie den Includeverzeichnispfad ändern. Erweitern Sie dazu im Dialogfeld Eigenschaftenseiten den Knoten Konfigurationseigenschaften, erweitern Sie den Knoten C/C++, und wählen Sie dann Allgemein aus. Geben Sie neben Zusätzliche Includeverzeichnisse den Pfad des Speicherorts der Headerdatei MathFuncsLib.h ein.

  5. Nun können Sie die MyMathFuncs-Klasse in dieser Anwendung verwenden. Ersetzen Sie den Inhalt von MyExecRefsLib.cpp durch folgenden Code:

    // MyExecRefsLib.cpp
    // compile with: /EHsc /link MathFuncsLib.lib
    
    #include <iostream>
    
    #include "MathFuncsLib.h"
    
    using namespace std;
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        cout << "a + b = " <<
            MathFuncs::MyMathFuncs::Add(a, b) << endl;
        cout << "a - b = " <<
            MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
        cout << "a * b = " <<
            MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
        cout << "a / b = " <<
            MathFuncs::MyMathFuncs::Divide(a, b) << endl;
    
        return 0;
    }
    
  6. Erstellen Sie die ausführbare Datei, indem Sie im Menü Erstellen den Befehl Projektmappe erstellen auswählen.

So führen Sie die Anwendung aus

  1. Stellen Sie sicher, dass MyExecRefsLib als Standardprojekt ausgewählt ist. Wählen Sie im Projektmappen-Explorer das Projekt MyExecRefsLib aus, und wählen Sie dann im Menü Projekt die Option Als Startprojekt festlegen aus.

  2. Um das Projekt auszuführen, wählen Sie im Menü Debuggen die Option Starten ohne Debuggen aus. Die Ausgabe sollte dieser Ausgabe ähneln:

    a + b = 106.4
    a - b = -91.6
    a * b = 732.6
    a / b = 0.0747475
    

Nächste Schritte

Zurück:Erstellen und Verwenden einer Dynamic Link Library (C++) | Weiter:Erstellen und Verwenden einer verwalteten Assembly (C++)

Siehe auch

Aufgaben

Einführung in Visual C++

Bereitstellen des Programms (C++)

Weitere Ressourcen

Allgemeine Programmierungsmethodiken

Bereitstellung (C++)