Partager via


Procédure pas à pas : création et utilisation d'une bibliothèque de liens dynamiques (C++)

Le premier type de bibliothèque que nous allons créer est une bibliothèque de liens dynamiques (DLL). L'utilisation de DLL est un excellent moyen de réutiliser du 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 couvre les sujets suivants :

  • Création d'un nouveau projet de bibliothèque de liens dynamiques (DLL).

  • Ajout d'une classe à la bibliothèque de liens dynamiques.

  • Création d'une application qui référence la bibliothèque de liens dynamiques.

  • Utilisation des fonctionnalités de la bibliothèque de classes dans l'application console.

  • Exécution de l'application.

Composants requis

Cette rubrique suppose que vous comprenez les notions de base du langage C++. Si vous commencez juste dans l'apprentissage de C++, nous vous recommandons de consulter le guide « C++ Beginner's Guide » (en anglais) écrit par Herb Schildt, disponible en ligne à l'adresse https://go.microsoft.com/fwlink/?LinkId=115303.

Création d'un nouveau projet de bibliothèque de liens dynamiques (DLL).

  1. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet....

  2. Dans le volet Types de projets, sous Visual C++, sélectionnez Win32.

  3. Dans le volet Modèles, sélectionnez Application console Win32.

  4. Choisissez un nom pour le projet, tel que MathFuncsDll et tapez-le dans le champ Nom. Choisissez un nom pour la solution, tel que BibliothèqueDynamique et tapez-le dans le champ Nom de solution.

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

  6. Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Type d'application, sélectionnez DLL si la valeur est disponible ou application Console si DLL n'est pas disponible. Certaines versions de Visual Studio ne prennent pas en charge la création d'un projet de DLL à l'aide d'Assistants. Vous pouvez ultérieurement la modifier pour que votre projet soit compilé en DLL.

  7. Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Options supplémentaires, sélectionnez Projet Vide.

  8. Cliquez sur Terminer pour créer le projet.

Ajout d'une classe dans la bibliothèque de liens dynamiques

  1. 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. Dans le volet Catégories, sous Visual C++, sélectionnez Code. Dans le volet Modèles, sélectionnez Fichier d'en-tête (.h). Choisissez un nom pour le fichier d'en-tête, tel que MathFuncsDll.h et cliquez sur Ajouter. Un fichier vide sera affiché.

  2. Ajoutez une classe simple nommée MyMathFuncs pour effectuer des opérations mathématiques courantes, telles que l'addition, la soustraction, la multiplication et la division. Le code doit se présenter comme suit :

    // MathFuncsDll.h
    
    namespace MathFuncs
    {
        class MyMathFuncs
        {
        public:
            // Returns a + b
            static __declspec(dllexport) double Add(double a, double b);
    
            // Returns a - b
            static __declspec(dllexport) double Subtract(double a, double b);
    
            // Returns a * b
            static __declspec(dllexport) double Multiply(double a, double b);
    
            // Returns a / b
            // Throws DivideByZeroException if b is 0
            static __declspec(dllexport) double Divide(double a, double b);
        };
    }
    
  3. Notez le modificateur __declspec(dllexport) dans les déclarations de méthode dans ce code. Ces modificateurs permettent à la DLL d'exporter la méthode afin qu'elle puisse être utilisée par d'autres applications. Pour plus d'informations, consultez dllexport, dllimport.

  4. 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. Dans le volet Catégories, sous Visual C++, sélectionnez Code. Dans le volet Modèles, sélectionnez Fichier C++ (.cpp). Choisissez un nom pour le fichier source, tel que MathFuncsDll.cpp et cliquez sur Ajouter. Un fichier vide sera affiché.

  5. Implémentez les fonctionnalités de MyMathFuncs dans le fichier source. Le code doit se présenter comme suit :

    // MathFuncsDll.cpp
    // compile with: /EHsc /LD
    
    #include "MathFuncsDll.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;
        }
    }
    
  6. Pour générer le projet dans une DLL, dans le menu Projet, sélectionnez MathFuncsDll 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 dynamique (.dll). Cliquez sur OK pour enregistrer les modifications.

    Notes

    Si vous générez un projet à partir de la ligne de commande, utilisez l'option du compilateur /LD pour spécifier que le fichier de sortie doit être une DLL. Pour plus d'informations, consultez /MD, /MT, /LD (Utiliser la bibliothèque Runtime).

  7. Compilez la bibliothèque de liens dynamiques en sélectionnant Générer la solution dans le menu Générer. Cela crée une DLL qui peut être utilisée par d'autres programmes. Pour plus d'informations concernant les DLL, consultez DLL.

Création d'une application qui référence la bibliothèque de liens dynamiques

  1. Pour créer une application qui référencera et utilisera la bibliothèque de liens dynamiques que vous venez de créer, dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Projet.

  2. Dans le volet Types de projets, sous Visual C++, sélectionnez Win32.

  3. Dans le volet Modèles, sélectionnez Application console Win32.

  4. Choisissez un nom pour le projet, tel que MyExecRefsDll puis tapez-le dans le champ Nom. En regard de Solution, sélectionnez Ajouter à la solution dans la liste déroulante. Cela ajoutera le nouveau projet à la même solution que la bibliothèque de liens dynamiques.

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

  6. Dans la page Paramètres de l'application de l'Assistant Application Win32, sous Type d'application, sélectionnez Application console.

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

  8. Cliquez sur Terminer pour créer le projet.

Utilisation des fonctionnalités de la bibliothèque de classes dans l'application console

  1. Lorsque vous avez créé une nouvelle application console, un programme vide est créé à votre intention. 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 MyExecRefsDll.cpp.

  2. Pour utiliser les routines mathématiques créées dans la bibliothèque de liens dynamiques, vous devez référencer celle-ci. Pour cela, sélectionnez le projet MyExecRefsDll dans l'Explorateur de solutions, puis sélectionnez Références... dans le menu Projet. Dans la boîte de dialogue Pages de propriétés, développez le nœud Propriétés communes, sélectionnez Structure et références, puis le bouton Ajouter une nouvelle référence.... Pour plus d'informations concernant 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>.

  3. La boîte de dialogue Ajouter une référence s'affiche. Cette boîte de dialogue répertorie toutes les bibliothèques que vous pouvez référencer. L'onglet Projet répertorie tous les projets de la solution actuelle et toutes les bibliothèques qu'ils contiennent. Sous l'onglet Projets, sélectionnez MathFuncsDll. Cliquez ensuite sur OK.

  4. Pour référencer les fichiers d'en-tête de la bibliothèque de liens dynamiques, vous devez modifier le chemin d'accès des répertoires inclus. Pour cela, dans la boîte de dialogue Pages de propriétés, développez le nœud Propriétés de configuration, puis le nœud C/C++ et enfin sélectionnez Général. En regard de Autres répertoires inclus, tapez le chemin d'accès de l'emplacement du fichier d'en-tête MathFuncsDll.h.

  5. Le fichier exécutable ne charge pas de bibliothèques de liens dynamiques avant l'exécution. Vous devez indiquer au système où localiser MathFuncsDll.dll. Vous le faites en utilisant la variable d'environnement PATH. Pour ce faire, dans la boîte de dialogue Pages de propriétés, développez le nœud Propriétés de configuration, puis sélectionnez Débogage. En regard de Environnement, tapez : PATH=<chemin du fichier MathFuncsDll.dll>, où <chemin du fichier MathFuncsDll.dll> est remplacé par l'emplacement réel de MathFuncsDll.dll. Cliquez sur OK pour enregistrer toutes les modifications.

    Notes

    Si vous souhaitez exécuter le fichier exécutable à partir de la ligne de commande au lieu de Visual Studio, vous devez mettre à jour manuellement la variable d'environnement PATH depuis l'invite de commandes comme suit : set PATH=%PATH%;<chemin du fichier MathFuncsDll.dll >, où <chemin du fichierMathFuncsDll.dll> est remplacé par l'emplacement réel de MathFuncsDll.dll.

  6. Vous pouvez maintenant utiliser la classe MyMathFuncs dans cette application. Remplacez le contenu de MyExecRefsDll.cpp par le code suivant :

    // MyExecRefsDll.cpp
    // compile with: /EHsc /link MathFuncsDll.lib
    
    #include <iostream>
    
    #include "MathFuncsDll.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;
    }
    
  7. 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

  1. Assurez-vous que MyExecRefsDll est sélectionné en tant que projet par défaut. Dans l'Explorateur de solutions, sélectionnez MyExecRefsDll, puis Définir comme projet de démarrage à partir du menu Projet.

  2. 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 : Création de code réutilisable (C++) | Suivant : Procédure pas à pas : création et utilisation d'une bibliothèque statique (C++)

Voir aussi

Tâches

Visite guidée de Visual C++

Procédure pas à pas : déploiement de votre programme (C++)

Concepts

DLL

Autres ressources

Méthodologies de programmation en Visual C++

Déploiement (Visual C++)