Condividi tramite


Procedura dettagliata: creazione e utilizzo di una libreria statica (C++)

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à.

In questa procedura dettagliata viene mostrato come completare le attività seguenti:

  • Creare un progetto di libreria statica.

  • Aggiungere una classe alla libreria statica.

  • Creare un'applicazione console che faccia riferimento alla libreria statica.

  • Utilizzare la funzionalità della libreria statica nell'applicazione.

  • Eseguire l'applicazione.

Prerequisiti

In questo argomento si presuppone la conoscenza delle nozioni di base del linguaggio C++. Per iniziare a utilizzare C++, è consigliabile visualizzare l'esercitazione in MSDN Library: Livello uno: Guida per i principianti di C++.

Per creare un 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 fare clic su 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, quindi scegliere Aggiungi. Verrà visualizzato un file vuoto.

  2. Aggiungere una classe denominata MyMathFuncs per eseguire operazioni matematiche comuni quali addizione, sottrazione, moltiplicazione e divisione. A tale scopo, sostituire il contenuto di MathFuncsLib.h con il codice 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, quindi scegliere Aggiungi. Verrà visualizzato un file vuoto.

  4. Implementare la funzionalità per MyMathFuncs nel file di origine. A tale scopo, sostituire il contenuto di MathFuncsLib.cpp con il codice 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à 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 (Compile Without Linking). 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 LIB Reference.

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

Per creare un'applicazione console che faccia riferimento alla libreria statica

  1. Per creare un'applicazione che faccia riferimento e utilizzi 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 digitarlo nel campo Nome. Accanto a Soluzione selezionare Aggiungi a soluzione dalla casella di riepilogo a discesa. Il nuovo progetto verrà aggiunto alla stessa soluzione della libreria statica.

  5. Fare clic su OK per avviare la Creazione guidata applicazione Win32. Nella pagina Panoramica della finestra di dialogo Creazione guidata applicazione Win32 fare clic su Avanti.

  6. Dalla 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

  1. Dopo avere creato l'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. È necessario fare riferimento alla libreria statica creata per utilizzare le relative routine matematiche. A tale scopo, scegliere Riferimenti dal menu Progetto. Nella finestra di dialogo Pagine delle proprietà di MyExecRefsLib espandere il nodo Proprietà comuni, quindi 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 scheda Progetti sono elencati i progetti nella soluzione corrente e le librerie a cui è possibile fare riferimento. Nella scheda Progetti selezionare MathFuncsLib. Scegliere OK.

  4. Per fare riferimento al file di intestazione MathFuncsLib.h, è necessario modificare il percorso delle directory di inclusione. Nella finestra di dialogo Pagine delle proprietà di MyExecRefsLib espandere il nodo Proprietà di configurazione, il nodo C/C++, quindi selezionare Generale. Nel valore della proprietà Directory di inclusione aggiuntive digitare il percorso della directory MathFuncsLib o cercarlo.

    Per cercare il percorso di directory, nella casella di riepilogo a discesa del valore della proprietà fare clic su Modifica. Nella casella di testo della finestra di dialogo Directory di inclusione aggiuntive selezionare una riga vuota e fare clic sul pulsante con i puntini di sospensione () alla fine della riga. Nella finestra di dialogo Seleziona directory selezionare la directory MathFuncsLib e fare clic su Seleziona cartella per salvare la selezione e chiudere la finestra di dialogo. Nella finestra di dialogo Directory di inclusione aggiuntive fare clic su OK.

  5. È ora possibile utilizzare la classe MyMathFuncs nell'applicazione. A tale scopo, 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, quindi selezionare 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: Procedura dettagliata: creazione e utilizzo di una libreria a collegamento dinamico (C++) | Successivo: Procedura dettagliata: creazione e utilizzo di un assembly gestito (C++)

Vedere anche

Attività

Presentazione guidata di Visual C++

Procedura dettagliata: distribuzione di un programma (C++)

Altre risorse

Metodologie di programmazione in Visual C++

Distribuzione (Visual C++)

Cronologia delle modifiche

Data

Cronologia

Motivo

Settembre 2010

Chiarito il passaggio 4 in "Per utilizzare la funzionalità della libreria statica nell'applicazione".

Commenti e suggerimenti dei clienti.