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

In questa procedura dettagliata viene illustrato come creare una libreria statica (un file con estensione .lib) da utilizzare con le applicazioni C++.L'utilizzo di una libreria statica è consigliato per riutilizzare il codice.Anziché implementare le stesse routine in tutte le applicazioni che richiedono una funzionalità, è possibile scriverle una sola volta in una libreria statica e quindi fare riferimento a esse dalle applicazioni.Il codice collegato ad una libreria statica diventa parte dell'applicazione—non è necessario avere file per utilizzare il codice.

Nella procedura dettagliata vengono illustrate le seguenti attività:

Prerequisiti

Una comprensione delle nozioni di base del linguaggio C++.

Per creare un progetto di libreria statica

  1. Nella barra del menu, scegliere File, Nuovo, Progetto.

  2. Nel riquadro sinistro della finestra di dialogo Nuovo progetto, espandere Installato, Modelli, Visual C++, quindi selezionare Win32

  3. Nel riquadro centrale, selezionare Applicazione console Win32.

  4. Specificare il nome del progetto—ad esempio, MathFuncsLib—nella casella Nome.Specificare un nome per la soluzione—ad esempio, StaticLibrary—nella casella Nome soluzione.Scegliere il pulsante OK.

  5. Nella pagina Panoramica, dalla finestra di dialogo Creazione guidata applicazione Win32, fare clic sul pulsante Avanti.

  6. Nella pagina Impostazioni applicazione, in Tipo di applicazione, selezionare Libreria statica.

  7. Nella pagina Impostazioni applicazione, in Opzioni aggiuntive, cancellare la casella di controllo Intestazione precompilata .

  8. Scegliere il pulsante Fine per creare il progetto.

Per aggiungere una classe alla libreria statica

  1. Per creare un file di intestazione per una nuova classe, scegliere Esplora soluzioni dal menu di scelta rapida del progetto MathFuncsLib, quindi scegliere Aggiungi, Nuovo elemento.Nella finestra di dialogo Aggiungi nuovo elemento, nel riquadro sinistro, in Visual C++, selezionare Codice.Nel riquadro centrale, selezionare File di intestazione (.h).Specificare un nome per il file d'intestazione—ad esempio, MathFuncsLib.h—quindi premere il pulsante Aggiungi.Viene visualizzato un file di intestazione vuoto.

  2. Aggiungere una classe denominata MyMathFuncs, per eseguire operazioni matematiche comuni come addizione, sottrazione, moltiplicazione e divisione.Il codice sarà simile a quello riportato di seguito:

    // 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
            static double Divide(double a, double b);
        };
    }
    
  3. Per creare un file sorgente per la nuova classe, scegliere Esplora soluzioni dal menu di scelta rapida del progetto MathFuncsLib, quindi scegliere Aggiungi, Nuovo elemento.Nella finestra di dialogo Aggiungi nuovo elemento, nel riquadro sinistro, in Visual C++, selezionare Codice.Nel riquadro centrale, selezionare File di C++ (.cpp).Specificare un nome per il file sorgente—ad esempio, MathFuncsLib.cpp—quindi premere il pulsante Aggiungi.Viene visualizzato un file sorgente vuoto.

  4. Utilizzare questo file sorgente per implementare la funzionalità per MyMathFuncs.Il codice sarà simile a quello riportato di seguito:

    // 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)
        {
            return a / b;
        }
    }
    
  5. Compilare la libreria statica scegliendo dalla barra dei menu Compila, Compila soluzione.Verrà creata una libreria statica utilizzabile da altri programmi.

    [!NOTA]

    Durante la compilazione da riga di comando in Visual Studio, è necessario compilare il programma in due passaggi.Innanzitutto, eseguire cl /c /EHsc MathFuncsLib.cpp per compilare il codice e creare un file oggetto denominato MathFuncsLib.obj.(Il comando cl richiama il compilatore Cl.exe, e l'opzione /c specifica la compilazione senza collegamento.Per ulteriori informazioni, vedere /c (Compila senza collegamenti). Successivamente, eseguire lib MathFuncsLib.obj per collegare il codice e creare la libreria statica MathFuncsLib.lib.(Il comando lib richiama il gestore delle librerie, Lib.exe.Per ulteriori informazioni, vedere Riferimenti a LIB.

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

  1. Nella barra del menu, scegliere File, Nuovo, Progetto.

  2. Nel riquadro sinistro, in Visual C++, selezionare Win32.

  3. Nel riquadro centrale, selezionare Applicazione console Win32.

  4. Specificare il nome del progetto—ad esempio, MyExecRefsLib—nella casella Nome.Nell'elenco a discesa vicino a Soluzione, selezionare Aggiungi a soluzione.Questo aggiunge un nuovo progetto alla soluzione che contiene le librerie statiche.Scegliere il pulsante OK.

  5. Nella pagina Panoramica, dalla finestra di dialogo Creazione guidata applicazione Win32, fare clic sul pulsante Avanti.

  6. Nella pagina Impostazioni applicazione, in Tipo di applicazione selezionare Applicazione console.

  7. Nella pagina Impostazioni applicazione, in Opzioni aggiuntive, cancellare la casella di controllo Intestazione precompilata .

  8. Scegliere il pulsante Fine per creare il progetto.

Per utilizzare questa funzionalità della libreria statica nell'applicazione.

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

  2. Per poter utilizzare le routine matematiche della libreria statica, è necessario fare riferimento ad esse.A tale scopo, aprire il menu di scelta rapida del progetto MyExecRefsLib in Esplora Risorse, e selezionare Riferimenti.In MyExecRefsLib, nella finestra di dialogo Pagine delle proprietà, espandere il nodo Proprietà comuni, selezionare Framework e riferimenti, quindi selezionare il pulsante 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. La finestra di dialogo Aggiungi riferimento, contiene l'elenco di tutte le librerie a cui è possibile fare riferimento.L'elenco di schede Progetto, sono elencati tutti i progetti nella soluzione corrente e le eventuali librerie contenute.Nella scheda Progetti, selezionare la casella di controllo MathFuncsLib, quindi scegliere il pulsante 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à per MyExecRefsLib, espandere il nodo Proprietà di configurazione, espandere il nodo C/C++, quindi selezionare Generale.Accanto a Directory di inclusione aggiuntive, specificare, o cercare, il percorso della directory contente MathFuncsLib.

    Per cercare il percorso della directory, aprire dal menu di scelta il valore proprietà , e quindi selezionare Modifica.Nella casella di testo della finestra di dialogo Directory di inclusione aggiuntive selezionare una riga vuota e selezionare, alla fine della riga, il pulsante con i puntini di sospensione ().Nella finestra di dialogo Seleziona directory, selezionare la directory contenente MathFuncsLib e selezionare il pulsante Seleziona cartella per salvare la selezione e chiudere la finestra di dialogo.Nella finestra di dialogo Directory di inclusione aggiuntive, scegliere il pulsante OK quindi nella finestra di dialogo Pagine delle proprietà, scegliere il pulsante OK per salvare le modifiche apportate al progetto.

  5. È ora possibile utilizzare la classe MyMathFuncs nell'applicazione.A tale scopo, sostituire il contenuto di MyExecRefsLib.cpp con questo codice:

    // 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 il file eseguibile scegliendo Compila e dalla barra dei menu Compila soluzione.

Per eseguire un'applicazione

  1. Verificare che MyExecRefsAssembly venga selezionato come progetto predefinito da aprire nel menu di scelta rapida MyExecRefsLib in Esplora soluzioni, quindi selezionare Imposta come progetto di avvio.

  2. Per eseguire il progetto, dalla barra dei menu selezionare Debug, Avvia senza eseguire debug.Il codice sarà analogo al seguente:

a + b = 106,4 a e b = -91,6 a * b = 732,6 a e b = 0,0747475

Vedere anche

Attività

Visual C++ Guided Tour

Procedura dettagliata: creazione e utilizzo di una libreria a collegamento dinamico (C++)

Concetti

Win32 applicazioni desktop (Visual C++)