Sdílet prostřednictvím


Podrobné pokyny: Vytvoření a použití statické knihovny (C++)

Další typ knihovny, kterou vytvoříme, je statická knihovna (LIB). Použití statických knihoven představuje skvělý způsob opětovného použití kódu. Pokud existují rutiny, které používáte ve více programech, stačí je napsat jednou a odkázat na ně z aplikace, která využívá jejich funkcionalitu.

Tento názorný postup ukazuje, jak provádět následující úkoly:

  • Vytvoření statické knihovny projektu.

  • Statické knihovny přidáte třídu.

  • Vytvoření aplikace, která odkazuje na statické knihovny.

  • Pomocí funkce ze statické knihovny v aplikaci.

  • Spusťte aplikaci.

Požadavky

Toto téma předpokládá, že chápete základy jazyka C++. Jste začali učení jazyka C++, doporučujeme zobrazit tento kurz v knihovně MSDN: Jedna úroveň: Příručka pro začátečníky C++.

Vytvoření statické knihovny projektu

  1. Z soubor nabídce vyberte Nový a projektu.

  2. V podokně Typ projektu pod Visual C++ vyberte Win32.

  3. V podokně Šablony zvolte Aplikace konzoly Win32.

  4. Zvolte název projektu, jako například MathFuncsLib, a zadejte jej v poli Název. Zvolte název pro řešení, jako například StaticLibrary, a zadejte jej do pole Název řešení.

  5. Pro spuštění Průvodce aplikací Win32 klikněte na tlačítko OK. Na stránce Přehled dialogového okna Průvodce aplikací Win32 klikněte na Další.

  6. Na stránce Nastavení aplikace Průvodce aplikací Win32, pod Typ aplikace, zvolte Statická knihovna.

  7. Na stránce Nastavení aplikace Průvodce aplikací Win32, pod Další možnosti zrušte zaškrtnutí Předkompilovaná hlavička.

  8. Pro vytvoření projektu klikněte na Dokončit.

Přidání třídy do statické knihovny

  1. Vytvoření záhlaví souboru pro novou třídu z projekt nabídce vyberte Přidat novou položku. Zobrazí se dialogové okno Přidat novou položku. V podokně Kategorie, pod Visual C++, zvolte Kód. V podokně Šablony, vyberte Soubor hlaviček (.H). Název záhlaví souboru, například MathFuncsLib.h a potom na tlačítko Přidat. Zobrazí se prázdný soubor.

  2. Přidáte třídu pojmenovanou MyMathFuncs provést běžné matematické operace, například sčítání, odčítání, násobení a dělení. To provedete následujícím kódem nahradíte obsah MathFuncsLib.h.

    // 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. Vytvoření zdrojového souboru pro novou třídu z projekt nabídce vyberte Přidat novou položku. Zobrazí se dialogové okno Přidat novou položku. V podokně Kategorie, pod Visual C++, zvolte Kód. V podokně Šablony zvolte Soubor C++ (.CPP). Název zdrojového souboru, například MathFuncsLib.cpp a potom na tlačítko Přidat. Zobrazí se prázdný soubor.

  4. Implementujte funkcionalitu MyMathFuncs ve zdrojovém souboru. To provedete následujícím kódem nahradíte obsah MathFuncsLib.cpp.

    // 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. Vytvořit z projektu do statické knihovny projekt nabídce vyberteVlastnosti. V levém podokně, pod Vlastnosti konfigurace, zvolte Obecné. V pravém podokně změňte Typ konfigurace na Statická knihovna (.LIB). Kliknutím na OK uložíte změny.

    Poznámka

    Při sestavování z příkazového řádku je nutné vytvořit program ve dvou krocích. Nejprve zkompilujte kód pomocí Cl.exe s možnosti kompilátoru /c (cl /c /EHsc MathFuncsLib.cpp). Toto vytvoří soubor objektu s názvem MathFuncsLib.OBJ. Další informace naleznete v tématu /c (Compile Without Linking). Za druhé připojte kód pomocí Správce knihoven Lib.exe (lib MathFuncsLib.obj). Tím se vytvoří statická knihovna MathFuncsLib.LIB. Další informace o Správci knihoven naleznete v tématu LIB Reference.

  6. Zkompilujte statickou knihovnu výběrem Sestavit řešení z nabídky Sestavit. Tím se vytvoří statická knihovna, kterou lze použít v jiných programech.

Vytvoření aplikace, která odkazuje na statické knihovny

  1. Vytvořit aplikaci, která bude odkazovat a používat statické knihovny, která byla právě vytvořena z soubor nabídce vyberte Nový a projektu.

  2. V podokně Typ projektu pod Visual C++ vyberte Win32.

  3. V podokně Šablony zvolte Aplikace konzoly Win32.

  4. Zvolte název projektu, jako například MyExecRefsLib, a zadejte jej v poli Název. Vedle roztok, vyberte Přidat roztok z rozevíracího seznamu. Tím se nový projekt přidá do stejného řešení jako statická knihovna.

  5. Pro spuštění Průvodce aplikací Win32 klikněte na tlačítko OK. Na stránce Přehled dialogového okna Průvodce aplikací Win32 klikněte na Další.

  6. Na stránce Nastavení aplikace Průvodce aplikací Win32, pod Typ aplikace, zvolte Aplikace konzoly.

  7. Na stránce Nastavení aplikace Průvodce aplikací Win32, pod Další možnosti zrušte zaškrtnutí Předkompilovaná hlavička.

  8. Pro vytvoření projektu klikněte na Dokončit.

Pomocí funkce statické knihovny v aplikaci

  1. Po vytvoření aplikace vytvoří průvodce prázdný program. Název zdrojového souboru je stejný jako název, který jste zvolili dříve pro projekt. V tomto příkladu je název MyExecRefsLib.CPP.

  2. Statická knihovna vytvořena pomocí své rutiny math musí odkazovat. To provedete výběr odkazy z projektu nabídce. Z MyExecRefsLib Stránky vlastností dialogovém okně pole, rozbalte položku Společné vlastnosti uzlu a potom klepněte na Přidat nový odkaz. Další informace o odkazy dialogové okno, viz Architektura a odkazy, Společná nastavení, Dialogové okno <Projectname> Stránky vlastností.

  3. Zobrazí se dialogové okno Přidat odkaz. Projekty karta seznam projektů v aktuální řešení a všech knihoven, které lze odkazovat. Na kartě Projekty vyberte MathFuncsLib. Klikněte na tlačítko OK.

  4. Chcete-li odkazovat na soubor záhlaví MathFuncsLib.h, musíte změnit cestu adresáře zahrnout. V MyExecRefsLib Stránky vlastností dialogové okno pole, rozbalte položku Vlastnosti konfigurace uzlu, Rozbalit C/C++ a pak vyberte uzel Obecné. V Další adresáře obsahují zadejte cestu k adresáři MathFuncsLib nebo jej vyhledejte hodnotu vlastnosti.

    Tlačítko Vyhledat cestu k adresáři, v poli rozevíracího seznamu hodnota vlastnosti Upravit. V Další adresáře obsahují dialogové okno textové pole vyberte prázdný řádek a potom klepněte na tlačítko elipsy () na konci řádku. V Vybrat adresář dialogovém okně vyberte adresář MathFuncsLib a klepněte na tlačítko Vybrat složku výběr uložte a zavřete dialogové okno. V Další adresáře obsahují dialogové okno, klepněte na tlačítko OK.

  5. Třídu MyMathFuncs lze nyní použít v této aplikaci. To provedete následujícím kódem nahradíte obsah MyExecRefsLib.cpp.

    // 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. Sestavte spustitelný soubor výběrem Sestavit řešení z nabídky Sestavení.

Spuštění aplikace

  1. Ujistěte se, že MyExecRefsLib je zvolen jako výchozí projekt. V Aplikaci Solution ExplorerMyExecRefsLib vybrat a vyberte Projektu nastavit jako spouštěcího z projekt nabídce.

  2. Chcete-li projekt spustit, zvolte Spustit bez ladění z nabídky Ladit. Výstup by měl vypadat takto:

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

Další kroky

Předchozí téma: Podrobné pokyny: Vytvoření a použití dynamické knihovny (C++) | Další téma: Podrobné pokyny: Vytvoření a použití spravovaných sestavení (C++)

Viz také

Úkoly

Průvodce aplikaci Visual C++

Podrobné pokyny: Nasazení programu (C++)

Další zdroje

Metody programování Visual C++

Nasazení (C++)

Historie změn

Datum

Poslední dokumenty

Důvod

Září 2010

Krok 4 čištěného v "Můžete použít funkci z statické knihovny v aplikaci".

Názory zákazníků