Procédure pas à pas : création et utilisation d'une bibliothèque statique (C++)
Le type suivant de bibliothèque que nous allons créer est une bibliothèque statique (LIB). L'utilisation de bibliothèques statiques est une excellente façon de réutiliser le code. Au lieu d'implémenter les mêmes routines à chaque fois que vous créez un programme, vous les écrivez une fois pour toutes et vous les référencez dans les applications qui en ont besoin.
Cette procédure pas à pas montre comment effectuer les tâches suivantes :
Créez un projet de bibliothèque statique.
Ajoutez une classe à la bibliothèque statique.
Créez une application console qui référence la bibliothèque statique.
Utilisez les fonctionnalités de la bibliothèque statique dans l'application.
Exécutez l'application.
Composants requis
Cette rubrique suppose que vous comprenez les notions de base du langage C++. Si vous débutez l'apprentissage du C++, nous vous recommandons de lire ce didacticiel dans MSDN Library : Niveau un : Guide du débutant C++ (en anglais).
Pour créer un projet de bibliothèque statique
Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.
Dans le volet Types de projets, sous Visual C++, sélectionnez Win32.
Dans le volet Modèles, sélectionnez Application console Win32.
Choisissez un nom pour le projet, tel que MathFuncsLib, et saisissez-le dans le champ Nom. Choisissez un nom pour la solution, tel que StaticLibrary et saisissez-le dans le champ Nom de solution.
Cliquez sur OK pour démarrer l'Assistant Application Win32. Dans la page Vue d'ensemble de la boîte de dialogue Assistant Application Win32, cliquez sur Suivant.
Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Type d'application, sélectionnez Bibliothèque statique.
Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Options supplémentaires, désactivez la case à cocher Fichier d'en-tête précompilé.
Cliquez sur Terminer pour créer le projet.
Ajout d'une classe à la bibliothèque statique
Pour créer un fichier d'en-tête pour une nouvelle classe, dans le menu Projet, sélectionnez Ajouter un nouvel élément. La boîte de dialogue Ajouter un nouvel élément s'affiche. À partir du volet Catégories, sous Visual C++, sélectionnez Code. Dans le volet Modèles, cliquez sur Fichier d'en-tête (.h). Choisissez un nom pour le fichier d'en-tête, tel que MathFuncsLib.h, puis cliquez sur Ajouter. Un fichier vide sera affiché.
Ajoutez une classe nommée MyMathFuncs pour effectuer des opérations mathématiques courantes, telles que l'addition, la soustraction, la multiplication et la division. Pour ce faire, remplacez le contenu de MathFuncsLib.h par le code suivant.
// 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); }; }
Pour créer un fichier source pour une nouvelle classe, dans le menu Projet, sélectionnez Ajouter un nouvel élément. La boîte de dialogue Ajouter un nouvel élément s'affiche. À partir du volet Catégories, sous Visual C++, sélectionnez Code. Dans le volet Modèles, cliquez sur Fichier C++ (.cpp). Choisissez un nom pour le fichier source, tel que MathFuncsLib.cpp, puis cliquez sur Ajouter. Un fichier vide sera affiché.
Implémentez les fonctionnalités de MyMathFuncs dans le fichier source. Pour ce faire, remplacez le contenu de MathFuncsLib.cpp par le code suivant.
// 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; } }
Pour générer le projet dans une bibliothèque statique, dans le menu Projet, sélectionnez Propriétés. Dans le volet gauche, sous Propriétés de configuration, sélectionnez Général. Dans le volet droit, modifiez le Type de configuration en Bibliothèque statique (.lib). Cliquez sur OK pour enregistrer les modifications.
Notes
Lorsque vous générez un projet à partir de la ligne de commande, vous devez générer le programme en deux étapes. En premier lieu, compilez le code en utilisant Cl.exe avec l'option du compilateur /c (cl /c /EHsc MathFuncsLib.cpp). Cette commande crée un fichier objet nommé MathFuncsLib.obj. Pour plus d'informations, consultez /c (Compiler sans liaison). En second lieu, liez le code en utilisant le Gestionnaire de bibliothèques Lib.exe (lib MathFuncsLib.obj). Cela créera la bibliothèque statique MathFuncsLib.lib. Pour plus d'informations concernant le Gestionnaire de bibliothèques, consultez Référence des LIB.
Compilez la bibliothèque statique en sélectionnant Générer la solution dans le menu Générer. Cela crée une bibliothèque statique qui peut être utilisée par d'autres programmes.
Pour créer une application console qui référence la bibliothèque statique
Pour créer une application qui référence et utilise la bibliothèque statique qui vient d'être créée, dans le menu Fichier, sélectionnez Nouveau, puis Projet.
Dans le volet Types de projets, sous Visual C++, sélectionnez Win32.
Dans le volet Modèles, sélectionnez Application console Win32.
Choisissez un nom pour le projet, tel que MyExecRefsLib puis tapez-le dans le champ Nom. En regard de Solution, sélectionnez Ajouter à la solution dans la zone de liste déroulante. Cela ajoutera le nouveau projet à la même solution que la bibliothèque statique.
Cliquez sur OK pour démarrer l'Assistant Application Win32. Dans la page Vue d'ensemble de la boîte de dialogue Assistant Application Win32, cliquez sur Suivant.
Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Type d'application, sélectionnez Application console.
Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Options supplémentaires, désactivez la case à cocher Fichier d'en-tête précompilé.
Cliquez sur Terminer pour créer le projet.
Pour utiliser les fonctionnalités de la bibliothèque statique dans l'application
Après que vous avez créé une application console, l'Assistant crée un programme vide qui vous est destiné. Le nom du fichier source est identique au nom que vous avez choisi précédemment pour le projet. Dans cet exemple, il s'agit de MyExecRefsLib.cpp.
Vous devez référencer la bibliothèque statique que vous avez créée pour utiliser ses routines mathématiques. Pour ce faire, sélectionnez Références dans le menu Projet. Dans la boîte de dialogue Pages de propriétés de MyExecRefsLib, développez le nœud Propriétés communes, puis cliquez sur Ajouter une nouvelle référence. Pour plus d'informations sur la boîte de dialogue Références, consultez Structure et Références, Propriétés communes, boîte de dialogue Pages de propriétés de <NomProjet>.
La boîte de dialogue Ajouter une référence s'affiche. L'onglet Projets répertorie les projets de la solution actuelle et toutes les bibliothèques que vous pouvez référencer. Sous l'onglet Projets, sélectionnez MathFuncsLib. Cliquez sur OK.
Pour référencer le fichier d'en-tête MathFuncsLib.h, vous devez modifier le chemin d'accès aux répertoires Include. Dans la boîte de dialogue Pages de propriétés de MyExecRefsLib, développez le nœud Propriétés de configuration, développez le nœud C/C++, puis sélectionnez Général. Dans la valeur de propriété Autres répertoires Include, tapez le chemin d'accès du répertoire MathFuncsLib ou recherchez ce dernier.
Pour rechercher le chemin d'accès du répertoire, dans la zone de liste déroulante de la valeur de propriété, cliquez sur Modifier. Dans la boîte de dialogue Autres répertoires Include, dans la zone de texte, sélectionnez une ligne vierge, puis cliquez sur le bouton de sélection (…) à la fin de la ligne. Dans la boîte de dialogue Sélectionner un répertoire, sélectionnez le répertoire MathFuncsLib, puis cliquez sur Sélectionner un dossier pour enregistrer votre sélection et fermer la boîte de dialogue. Dans la boîte de dialogue Autres répertoires Include, cliquez sur OK.
Vous pouvez maintenant utiliser la classe MyMathFuncs dans cette application. Pour ce faire, remplacez le contenu de MyExecRefsLib.cpp par le code suivant.
// 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; }
Générez le fichier exécutable en sélectionnant Générer la solution dans le menu Générer.
Pour exécuter l'application
Assurez-vous que MyExecRefsLib est sélectionné comme projet par défaut. Dans l'Explorateur de solutions, sélectionnez MyExecRefsLib, puis Définir comme projet de démarrage à partir du menu Projet.
Pour exécuter le projet, sélectionnez Exécuter sans débogage dans le menu Débogage. La sortie doit ressembler à ceci :
a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747475
Étapes suivantes
Précédent : Procédure pas à pas : création et utilisation d'une bibliothèque de liens dynamiques (C++) | Suivant : Procédure pas à pas : création et utilisation d'un assembly managé (C++)
Voir aussi
Tâches
Procédure pas à pas : déploiement de votre programme (C++)
Autres ressources
Méthodologies de programmation en Visual C++
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Septembre 2010 |
Clarification de l'étape 4 dans « Pour utiliser les fonctionnalités de la bibliothèque statique dans l'application ». |
Commentaires client. |