Genomgång: Skapa och använda ett statiskt bibliotek

Den här stegvisa genomgången visar hur du skapar ett statiskt bibliotek (.lib-fil) för användning med C++-appar. Att använda ett statiskt bibliotek är ett bra sätt att återanvända kod. I stället för att omimplementera samma rutiner i varje app som kräver funktionerna skriver du dem en gång i ett statiskt bibliotek och refererar sedan till dem från apparna. Kod som är länkad från ett statiskt bibliotek blir en del av din app. Du behöver inte installera en annan fil för att använda koden.

Den här genomgången beskriver följande uppgifter:

Förutsättningar

En förståelse av grunderna i C++-språket.

Skapa ett statiskt biblioteksprojekt

Instruktionerna för hur du skapar projektet varierar beroende på din version av Visual Studio. Om du vill se dokumentationen för din föredragna version av Visual Studio använder du väljarkontrollen Version. Den finns överst i innehållsförteckningen på den här sidan.

Så här skapar du ett statiskt biblioteksprojekt i Visual Studio:

  1. I menyraden väljer du Arkiv>nytt>Project för att öppna dialogrutan Skapa en ny project.

  2. Längst upp i dialogrutan anger du Språk till C++, anger Plattform till Windows och anger Projekttyp till Bibliotek.

  3. I den filtrerade listan över projekttyper väljer du Windows Skrivbordsguide och väljer sedan Nästa.

  4. På sidan Konfigurera det nya projektet anger du MathLibrary i rutan Projektnamn för att ange ett namn för projektet. Ange StaticMath i rutan Lösningsnamn . Välj knappen Skapa för att öppna dialogrutan Windows Desktop-projekt .

  5. I dialogrutan Windows Desktop-projekt går du till Programtyp och väljer Statiskt bibliotek (.lib).

  6. Under Ytterligare alternativ avmarkerar du kryssrutan Förkompilerad rubrik om den är markerad. Välj Tomt projekt.

  7. Välj OK för att skapa projektet.

Så här skapar du ett statiskt biblioteksprojekt i Visual Studio 2017:

  1. På menyraden väljer du Arkiv>Nytt>projekt.

  2. I dialogrutan Nytt Project väljer du Installerad>Visual C++>Windows Desktop. I mittenfönstret väljer du Guiden Windows Desktop.

  3. Ange ett namn för projektet, till exempel MathLibrary, i rutan Namn . Ange ett namn för lösningen, till exempel StaticMath, i rutan Lösningsnamn . Välj OK.

  4. I dialogrutan Windows Desktop-projekt går du till Programtyp och väljer Statiskt bibliotek (.lib).

  5. Under Ytterligare alternativ avmarkerar du kryssrutan Förkompilerad rubrik om den är markerad. Välj Tomt projekt.

  6. Välj OK för att skapa projektet.

Så här skapar du ett statiskt biblioteksprojekt i Visual Studio 2015:

  1. På menyraden väljer du Arkiv>Nytt>projekt.

  2. I dialogrutan Nytt Project väljer du Installerade>mallar>Visual C++>Win32. I mittenfönstret väljer du Win32-konsolprogram.

  3. Ange ett namn för projektet, till exempel MathLibrary, i rutan Namn . Ange ett namn för lösningen, till exempel StaticMath, i rutan Lösningsnamn . Välj OK.

  4. I guiden Win32-program väljer du Nästa.

  5. På sidan Programinställningar går du till Programtyp och väljer Statiskt bibliotek. Under Ytterligare alternativ avmarkerar du kryssrutan Förkompilerad rubrik . Välj Slutför för att skapa projektet.

Lägga till en klass i det statiska biblioteket

Så här lägger du till en klass i det statiska biblioteket:

  1. Skapa en rubrikfil för en ny klass. I Prieskumník riešeníhögerklickar du på MathLibrary för att öppna snabbmenyn för projektet. Välj Lägg till>nytt objekt.

  2. I dialogrutan Lägg till nytt objekt väljer du Visual C++>Code. I mittenfönstret väljer du Rubrikfil (.h). Ange ett namn för rubrikfilen, till exempel MathLibrary.h, och välj sedan Lägg till. En nästan tom rubrikfil visas.

  3. Lägg till en deklaration för en klass med namnet Arithmetic för att utföra vanliga matematiska åtgärder, till exempel addition, subtraktion, multiplikation och division. Koden bör likna:

    // MathLibrary.h
    #pragma once
    
    namespace MathLibrary
    {
        class Arithmetic
        {
        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
            static double Divide(double a, double b);
        };
    }
    
  4. Om du vill skapa en källfil för den nya klassen öppnar du snabbmenyn för MathLibrary-projektet i Prieskumník riešení och väljer sedan Lägg till>nytt objekt.

  5. I dialogrutan Lägg till nytt objekt i mittenfönstret väljer du C++-fil (.cpp). Ange ett namn för källfilen, till exempel MathLibrary.cpp. Välj sedan Lägg till. En tom källfil visas.

  6. Använd den här källfilen för att implementera funktionen för klassen Arithmetic. Koden bör likna:

    // MathLibrary.cpp
    // compile with: cl /c /EHsc MathLibrary.cpp
    // post-build command: lib MathLibrary.obj
    
    #include "MathLibrary.h"
    
    namespace MathLibrary
    {
        double Arithmetic::Add(double a, double b)
        {
            return a + b;
        }
    
        double Arithmetic::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double Arithmetic::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double Arithmetic::Divide(double a, double b)
        {
            return a / b;
        }
    }
    
  7. Om du vill skapa det statiska biblioteket väljer du Skapa>bygglösning på menyraden. Bygget skapar ett statiskt bibliotek, MathLibrary.lib, som andra program kan använda.

    Anmärkning

    När du bygger på Visual Studio-kommandoraden måste du skapa programmet i två steg.

    1. Kör cl /c /EHsc MathLibrary.cpp för att kompilera koden och skapa en objektfil med namnet MathLibrary.obj. Kommandot cl anropar kompilatorn Cl.exeoch /c alternativet anger kompilering utan länkning. Mer information finns i /c (Kompilera utan länkning).
    2. Kör lib MathLibrary.obj för att länka koden och skapa det statiska biblioteket MathLibrary.lib. Kommandot lib anropar bibliotekshanteraren Lib.exe. Mer information finns i LIB-referens.

Skapa en C++-konsolapp som refererar till det statiska biblioteket

Så här skapar du en C++-konsolapp som refererar till det statiska biblioteket i Visual Studio:

  1. I Prieskumník riešení högerklickar du på den översta noden, Solution 'StaticMath', för att öppna snabbmenyn. Välj Lägg till>nytt projekt för att öppna dialogrutan Lägg till ett nytt projekt .

  2. Överst i dialogrutan anger du filtret Projekttyp till Konsol.

  3. I den filtrerade listan över projekttyper väljer du Konsolapp och sedan Nästa. På nästa sida anger du MathClient som namn på projektet.

  4. Välj Skapa för att skapa klientprojektet.

    När du har skapat en konsolapp skapas ett tomt program åt dig. Namnet på källfilen är samma som det namn som du valde tidigare. I exemplet heter MathClient.cpp.

Så här skapar du en C++-konsolapp som refererar till det statiska biblioteket i Visual Studio 2017:

  1. I Prieskumník riešení högerklickar du på den översta noden, Solution 'StaticMath', för att öppna snabbmenyn. Välj Lägg till>nytt projekt för att öppna dialogrutan Lägg till ett nytt projekt .

  2. I dialogrutan Lägg till ny Project väljer du Installerat>Visual C++>Windows Desktop. I mittenfönstret väljer du Guiden Windows Desktop.

  3. Ange ett namn för projektet, till exempel MathClient, i rutan Namn . Välj knappen OK.

  4. I dialogrutan Windows-skrivbordsprojekt går du till Programtyp och väljer Konsolprogram (.exe).

  5. Under Ytterligare alternativ avmarkerar du kryssrutan Förkompilerad rubrik om den är markerad.

  6. Välj OK för att skapa projektet.

  7. När du har skapat en konsolapp skapas ett tomt program åt dig. Namnet på källfilen är samma som det namn som du valde tidigare. I exemplet heter MathClient.cpp.

Så här skapar du en C++-konsolapp som refererar till det statiska biblioteket i Visual Studio 2015:

  1. I Prieskumník riešení högerklickar du på den översta noden, Solution 'StaticMath', för att öppna snabbmenyn. Välj Lägg till>nytt projekt för att öppna dialogrutan Lägg till ett nytt projekt .

  2. I dialogrutan Lägg till nytt projekt väljer du Installerade>Visual C++>Win32. I mittenfönstret väljer du Win32-konsolprogram.

  3. Ange ett namn för projektet, till exempel MathClient, i rutan Namn . Välj knappen OK.

  4. I dialogrutan Win32-programguiden väljer du Nästa.

  5. På sidan Programinställningar under Programtyp kontrollerar du att konsolprogrammet är valt. Under Ytterligare alternativ avmarkerar du Förkompilerat huvud och väljer sedan Tom Project. Välj Slutför för att skapa projektet.

  6. Om du vill lägga till en källfil i det tomma projektet högerklickar du för att öppna snabbmenyn för MathClient-projektet i Prieskumník riešení och väljer sedan Lägg till>nytt objekt.

  7. I dialogrutan Lägg till nytt objekt väljer du Visual C++>Code. I mittenfönstret väljer du C++ Fil (.cpp). Ange ett namn för källfilen, till exempel MathClient.cpp, och välj sedan knappen Lägg till . En tom källfil visas.

Använda funktionerna från det statiska biblioteket i appen

Så här använder du funktionerna från det statiska biblioteket i appen:

  1. Referera till det statiska biblioteket innan du använder matematiska rutiner i det. Öppna snabbmenyn för MathClient-projektet i Prieskumník riešení och välj sedan Lägg till>referens.

  2. Dialogrutan Lägg till referens visar de bibliotek som du kan referera till. På fliken Projekt visas projekten i den aktuella lösningen och eventuella bibliotek som de refererar till. Öppna fliken Projekt , välj MathLibrary och välj sedan OK.

  3. Ändra sökvägen till include-katalogerna så att den pekar på headerfilen MathLibrary.h. I Prieskumník riešení högerklickar du på MathClient för att öppna snabbmenyn. Välj Egenskaper för att öppna dialogrutan MathClient-egenskapssidor .

  4. I dialogrutan MathClient-egenskapssidor anger du konfigurationsvärdet till Alla konfigurationer. Ange Plattform till Alla plattformar.

  5. Välj egenskapssidan Konfigurationsegenskaper>C/C++>Allmänt . I egenskapen Ytterligare inkludera kataloger anger du sökvägen till katalogen MathLibrary eller bläddrar efter den.

    Så här bläddrar du efter katalogsökvägen:

    1. Öppna listrutan Ytterligare inkludera kataloger-egenskapsvärde och välj sedan Redigera.

    2. I dialogrutan Ytterligare inkluderingskataloger dubbelklickar du längst upp i textrutan. Välj sedan ellipsknappen (...) i slutet av raden.

    3. I dialogrutan Välj katalog navigerar du upp en nivå och väljer sedan katalogen MathLibrary . Välj sedan knappen Välj mapp för att spara ditt val.

    4. I dialogrutan Ytterligare inkludera kataloger väljer du knappen OK .

    5. I dialogrutan Egenskapssidor väljer du knappen OK för att spara ändringarna i projektet.

  6. Nu kan du använda Arithmetic-klassen i appen genom att inkludera #include "MathLibrary.h" headerfilen i koden. Ersätt innehållet i MathClient.cpp med den här koden:

    // MathClient.cpp
    // compile with: cl /EHsc MathClient.cpp /link MathLibrary.lib
    
    #include <iostream>
    #include "MathLibrary.h"
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        std::cout << "a + b = " <<
            MathLibrary::Arithmetic::Add(a, b) << std::endl;
        std::cout << "a - b = " <<
            MathLibrary::Arithmetic::Subtract(a, b) << std::endl;
        std::cout << "a * b = " <<
            MathLibrary::Arithmetic::Multiply(a, b) << std::endl;
        std::cout << "a / b = " <<
            MathLibrary::Arithmetic::Divide(a, b) << std::endl;
    
        return 0;
    }
    
  7. Om du vill skapa den körbara filen väljer du Skapa>bygglösning på menyraden.

Kör appen

Så här kör du appen:

  1. Kontrollera att MathClient är valt som standardprojekt. Om du vill markera det högerklickar du på MathClient i Prieskumník riešení för att öppna snabbmenyn och väljer sedan Ange som StartUp-Project.

  2. På menyraden väljer du Felsöka>Starta utan felsökning för att köra projektet. Utdata bör likna:

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

Se även

Genomgång: Skapa och använda ett dynamiskt länkbibliotek (C++)