Creazione e utilizzo di una libreria statica (C++)

Aggiornamento: novembre 2007

Il tipo di libreria successivo da creare a una libreria statica (LIB). L'utilizzo di librerie statiche è un ottimo modo per riutilizzare il codice. Anziché implementare le stesse routine in tutti i programmi creati, è possibile scriverle una sola volta e fare riferimento a esse da applicazioni che ne richiedono le funzionalità.

Questa procedura dettagliata include:

  • Creazione di un nuovo progetto di libreria statica.

  • Aggiunta di una classe alla libreria statica.

  • Creazione di un'applicazione che fa riferimento alla libreria statica.

  • Utilizzo della funzionalità della libreria statica nell'applicazione console.

  • Esecuzione dell'applicazione.

Prerequisiti

In questo argomento si presuppone la conoscenza delle nozioni di base del linguaggio C++. Chi sta iniziando ad apprendere le prime nozioni di C++ troverà particolarmente utile il testo "C++ Beginner's Guide" scritto da Herb Schildt, disponibile in linea all'indirizzo https://go.microsoft.com/fwlink/?LinkId=115303 (informazioni in lingua inglese).

Per creare un nuovo progetto di libreria statica

  1. Scegliere Nuovo dal menu File e quindi Progetto....

  2. Nel riquadro Tipi progetto fare clic sul nodo Visual C++, quindi selezionare Win32.

  3. Nel riquadro Modelli selezionare Applicazione console Win32.

  4. Scegliere un nome per il progetto, ad esempio MathFuncsLib, e immetterlo nel campo Nome. Scegliere un nome per la soluzione, ad esempio StaticLibrary, e immetterlo nel campo Nome soluzione.

  5. Scegliere OK per avviare la Creazione guidata applicazione Win32. Nella pagina Panoramica della finestra di dialogo Creazione guidata applicazione Win32 scegliere Avanti.

  6. Nella pagina Impostazioni applicazione della Creazione guidata applicazione Win32 in Tipo applicazione selezionare Libreria statica.

  7. Nella pagina Impostazioni applicazione della Creazione guidata applicazione Win32 in Opzioni aggiuntive deselezionare la casella di controllo Intestazione precompilata.

  8. Scegliere Fine per creare il progetto.

Per aggiungere una classe alla libreria statica

  1. Per creare un file di intestazione per una nuova classe, scegliere Aggiungi nuovo elemento... dal menu Progetto. Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento. Nel riquadro Categorie in Visual C++ selezionare Codice. Nel riquadro Modelli selezionare File di intestazione (.h). Scegliere un nome per il file di intestazione, ad esempio MathFuncsLib.h, e scegliere Aggiungi. Verrà visualizzato un file vuoto.

  2. Aggiungere una classe semplice denominata MyMathFuncs per eseguire operazioni matematiche comuni, come addizione, sottrazione, moltiplicazione e divisione. Il codice dovrebbe essere analogo al seguente:

    // 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. Per creare un file di origine per una nuova classe, scegliere Aggiungi nuovo elemento... dal menu Progetto. Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento. Nel riquadro Categorie in Visual C++ selezionare Codice. Nel riquadro Modelli selezionare File di C++ (.cpp). Scegliere un nome per il file di origine, ad esempio MathFuncsLib.cpp, e scegliere Aggiungi. Verrà visualizzato un file vuoto.

  4. Implementare la funzionalità per MyMathFuncs nel file di origine. Il codice dovrebbe essere analogo al seguente:

    // 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. Per compilare il progetto in una libreria statica, scegliere Proprietà di MathFuncsLib dal menu Progetto. Nel riquadro sinistro in Proprietà di configurazione selezionare Generale. Nel riquadro destro modificare Tipo configurazione in Libreria statica (.lib). Scegliere OK per salvare le modifiche.

    Nota:

    Durante la compilazione dalla riga di comando, è necessario compilare il programma in due passaggi. Compilare il codice tramite Cl.exe con l'opzione del compilatore /c (cl /c /EHsc MathFuncsLib.cpp). Verrà creato un file oggetto denominato MathFuncsLib.obj. Per ulteriori informazioni, vedere /c (Compila senza collegamenti). Collegare il codice tramite Gestione librerie Lib.exe (lib MathFuncsLib.obj) per creare la libreria statica MathFuncsLib.lib. Per ulteriori informazioni sul Gestione librerie, vedere Riferimenti a LIB.

  6. Compilare la libreria statica scegliendo Compila soluzione dal menu Compila. Verrà creata una libreria statica utilizzabile da altri programmi.

Per creare un'applicazione che fa riferimento alla libreria statica

  1. Per creare un'applicazione che farà riferimento e utilizzerà la libreria statica appena creata, scegliere Nuovo dal menu File e quindi Progetto….

  2. Nel riquadro Tipi progetto fare clic sul nodo Visual C++, quindi selezionare Win32.

  3. Nel riquadro Modelli selezionare Applicazione console Win32.

  4. Scegliere un nome per il progetto, ad esempio MyExecRefsLib, e immetterlo nel campo Nome. Accanto a Soluzione selezionare Aggiungi a soluzione dall'elenco a discesa. Il nuovo progetto verrà aggiunto alla stessa soluzione della libreria statica.

  5. Scegliere OK per avviare la Creazione guidata applicazione Win32. Nella pagina Panoramica della finestra di dialogo Creazione guidata applicazione Win32 scegliere Avanti.

  6. Nella pagina Impostazioni applicazione della Creazione guidata applicazione Win32 in Tipo applicazione selezionare Applicazione console.

  7. Nella pagina Impostazioni applicazione della Creazione guidata applicazione Win32 in Opzioni aggiuntive deselezionare la casella di controllo Intestazione precompilata.

  8. Scegliere Fine per creare il progetto.

Per utilizzare la funzionalità della libreria statica nell'applicazione console

  1. Dopo la creazione di una nuova applicazione console, verrà creato un programma vuoto. Il nome per il file di origine sarà uguale al nome scelto in precedenza per il progetto. In questo esempio, il file è denominato MyExecRefsLib.cpp.

  2. Per utilizzare le routine matematiche create nella libreria statica, è necessario fare riferimento a essa scegliendo Riferimenti... dal menu Progetto. Nella finestra di dialogo Pagine delle proprietà espandere il nodo Proprietà comuni, quindi selezionare Riferimenti. Scegliere Aggiungi nuovo riferimento…. Per ulteriori informazioni sulla finestra di dialogo Riferimenti…, vedere Framework e riferimenti, Proprietà comuni, finestra di dialogo Pagine delle proprietà di <nomeprogetto>.

  3. Verrà visualizzata la finestra di dialogo Aggiungi riferimento. nella quale sono elencate tutte le librerie a cui è possibile fare riferimento. Nella scheda Progetto sono elencati tutti i progetti nella soluzione corrente e le eventuali librerie che contengono. Nella scheda Progetti selezionare MathFuncsLib. Scegliere OK. Per ulteriori informazioni sulla finestra di dialogo Aggiungi riferimento, vedere Finestra di dialogo Aggiungi riferimento.

  4. Per fare riferimento ai file di intestazione della libreria statica, è necessario modificare il percorso delle directory di inclusione. A tal fine, nella finestra di dialogo Pagine delle proprietà espandere il nodo Proprietà di configurazione, il nodo C/C++, quindi selezionare Generale. Accanto a Directory di inclusione aggiuntive digitare il percorso del file di intestazione MathFuncsLib.h.

  5. È ora possibile utilizzare la classe MyMathFuncs nell'applicazione. Sostituire il contenuto di MyExecRefsLib.cpp con il codice seguente:

    // 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. Compilare l'eseguibile scegliendo Compila soluzione dal menu Compila.

Per eseguire l'applicazione

  1. Assicurarsi che MyExecRefsLib sia selezionato come progetto predefinito. In Esplora soluzioni selezionare MyExecRefsLib e scegliere Imposta come progetto di avvio dal menu Progetto.

  2. Per eseguire il progetto, scegliere Avvia senza eseguire debug dal menu Debug. Il codice sarà analogo al seguente:

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

Passaggi successivi

Precedente:Creazione e utilizzo di una libreria a collegamento dinamico (C++) | Successivo:Creazione e utilizzo di un assembly gestito (C++)

Vedere anche

Attività

Presentazione guidata di Visual C++

Distribuzione di un programma (C++)

Altre risorse

Metodologie di programmazione comuni

Distribuzione (C++)