Freigeben über


Exemplarische Vorgehensweise: Erstellen und Verwenden einer statischen Bibliothek (C++)

Aktualisiert: September 2010

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 wird erläutert, wie die folgenden Aufgaben ausgeführt werden:

  • Erstellen eines statischen Bibliotheksprojekts.

  • Hinzufügen einer Klasse zur statischen Bibliothek.

  • Erstellen einer Konsolenanwendung, die auf die statische Bibliothek verweist.

  • Verwenden der Funktionen über die statische Bibliothek in der Anwendung.

  • Führen Sie die Anwendung aus.

Vorbereitungsmaßnahmen

In diesem Thema wird davon ausgegangen, dass Sie die Grundlagen der Programmiersprache C++ beherrschen. Wenn Sie gerade Ihre ersten Schritte mit C++ unternehmen, ist das folgende Lernprogramm in der MSDN-Bibliothek empfehlenswert: Ebene 1: Handbuch für C++-Anfänger.

So erstellen Sie ein 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 Lösung 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 anschließend auf Hinzufügen. Eine leere Datei wird angezeigt.

  2. Fügen Sie eine Klasse mit dem Namen "MyMathFuncs" hinzu, die zur Ausführung der geläufigen mathematischen Operationen wie Addition, Subtraktion, Multiplikation und Division dient. Ersetzen Sie dazu den Inhalt von "MathFuncsLib.h" durch den folgenden Code.

    // 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 anschließend auf Hinzufügen. Eine leere Datei wird angezeigt.

  4. Implementieren Sie die Funktionalität von MyMathFuncs in der Quelldatei. Ersetzen Sie dazu den Inhalt von "MathFuncsLib.cpp" durch den folgenden Code.

    // 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. Wählen Sie im Menü Projekt die Option Eigenschaften aus, um aus dem Projekt eine statische Bibliothek zu erstellen. 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.

    Tipp

    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 Konsolenanwendung, 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 die Funktionen über die statische Bibliothek in der Anwendung

  1. Nach dem Erstellen einer 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. Sie müssen auf die erstellte statische Bibliothek verweisen, um die mathematischen Routinen verwenden zu können. Wählen Sie dazu im Menü Projekt die Option Verweise aus. Erweitern Sie im Dialogfeld Eigenschaftenseiten von MyExecRefsLib den Knoten Allgemeine Eigenschaften, und klicken Sie dann auf Neuen Verweis hinzufügen. Weitere Informationen zum Dialogfeld Verweise finden Sie unter Framework und Verweise, Allgemeine Eigenschaften, Dialogfeld '<Projektname>-Eigenschaftenseiten'.

  3. Das Dialogfeld Verweis hinzufügen wird angezeigt. Auf der Registerkarte Projekte werden die Projekte in der aktuellen Lösung und alle Bibliotheken aufgeführt, auf die Sie verweisen können. Wählen Sie auf der Registerkarte Projekte das Projekt "MathFuncsLib" aus. Klicken Sie auf OK.

  4. Um auf die Headerdatei "MathFuncsLib.h" zu verweisen, müssen Sie den Includeverzeichnispfad ändern. Erweitern Sie im Dialogfeld Eigenschaftenseitenvon MyExecRefsLib den Knoten Konfigurationseigenschaften, erweitern Sie den Knoten C/C++, und wählen Sie dann Allgemein aus. Geben Sie im Eigenschaftswert Zusätzliche Includeverzeichnisse den Pfad des MathFuncsLib-Verzeichnisses ein, oder suchen Sie danach.

    Um nach dem Verzeichnispfad zu suchen, klicken Sie im Dropdown-Listenfeld für Eigenschaftswerte auf Bearbeiten. Wählen Sie im Dialogfeld Zusätzliche Includeverzeichnisse im Textfeld eine Leerzeile aus, und klicken Sie dann auf die Schaltfläche mit den Auslassungspunkten (...) am Ende der Linie. Wählen Sie im Dialogfeld Verzeichnis auswählen das MathFuncsLib-Verzeichnis aus, und klicken Sie dann auf Ordner auswählen, um die Auswahl zu speichern und das Dialogfeld zu schließen. Klicken Sie im Dialogfeld Zusätzliche Includeverzeichnisse auf OK.

  5. Nun können Sie die MyMathFuncs-Klasse in dieser Anwendung verwenden. Ersetzen Sie dazu den Inhalt von "MyExecRefsLib.cpp" durch den 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 in Projektmappen-Explorer das Projekt "MyExecRefsLib" aus, und wählen Sie dann die Option Als Startprojekt festlegen im Menü Projekt 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: Exemplarische Vorgehensweise: Erstellen und Verwenden einer Dynamic Link Library (C++) | Weiter: Exemplarische Vorgehensweise: Erstellen und Verwenden einer verwalteten Assembly (C++)

Siehe auch

Aufgaben

Einführung in Visual C++

Exemplarische Vorgehensweise: Bereitstellen des Programms (C++)

Weitere Ressourcen

Methodiken der Visual C++-Programmierung

Bereitstellung (Visual C++)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

September 2010

Schritt 4 in "So verwenden Sie die Funktionen über die statische Bibliothek in der Anwendung" wurde genauer erläutert.

Kundenfeedback.