Partager via


Procédure pas à pas : création et utilisation d'un assembly managé (C++)

Un assembly managé est une sorte de bibliothèque que vous pouvez créer pour réutiliser du code efficacement. 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 décrit les tâches suivantes :

  • Création d'un projet de bibliothèque de classes

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

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

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

  • Exécution de l'application.

Composants requis

Pour compléter cette procédure pas à pas, vous devez comprendre les notions de base du langage C++. Si vous commencez l'apprentissage de C++, nous recommandons « C++ Beginner's Guide » (en anglais) écrit par Herb Schildt, qui est disponible à l'Espace formations pour développeurs débutants sur le site Web MSDN.

Pour créer un projet de bibliothèque de classes

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

  2. Dans le volet Types de projet, sous Visual C++, sélectionnez CLR.

    Chaque type de projet de ce groupe crée un projet qui cible le CLR (common language runtime).

  3. Dans le volet Modèles, sélectionnez Bibliothèque de classes.

  4. Dans la zone Nom, tapez un nom pour votre projet, par exemple MathFuncsAssembly. Dans le champ Nom de solution, tapez un nom pour la solution, par exemple, ManagedAssemblies.

  5. Cliquez sur OK pour créer le projet.

  6. Par défaut, lorsqu'un projet est créé, il est configuré pour utiliser un en-tête précompilé. Pour désactiver l'en-tête précompilé pour le projet MathFuncsAssembly, dans l'Explorateur de solutions, sélectionnez le projet, puis, dans le menu Projet, cliquez sur Propriétés. Développez le nœud Propriétés de configuration, le nœud C/C++ puis sélectionnez En-têtes précompilés. Dans la liste en regard de Création/utilisation d'un en-tête précompilé, sélectionnez Sans utiliser les en-têtes précompilés. Cliquez sur OK pour enregistrer ces modifications. Pour plus d'informations, consultez Création de fichiers d'en-tête précompilés.

Ajout d'une classe à la bibliothèque de classes

  1. Après la création de la bibliothèque de classes CLR, l'Assistant génère une classe de base. Le fichier d'en-tête et le fichier source générés portent le nom que vous avez donné au projet lors de sa création. Dans cet exemple, ils sont nommés MathFuncsAssembly.h et MathFuncsAssembly.cpp.

  2. Remplacez le code existant dans MathFuncsAssembly.h à l'aide d'une classe de base nommée MyMathFuncsAssembly. Cette classe exécute des opérations mathématiques courantes telles que des additions, soustractions, multiplications et divisions. Le code doit ressembler à l'exemple suivant.

    // MathFuncsAssembly.h
    
    using namespace System;
    
    namespace MathFuncs
    {
        public ref 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. Implémentez les fonctionnalités de MyMathFuncs dans le fichier source. Le code doit ressembler à l'exemple suivant.

    // MathFuncsAssembly.cpp
    // compile with: /clr /LD
    
    #include "MathFuncsAssembly.h"
    
    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 gcnew DivideByZeroException("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  4. Compilez la bibliothèque de classes en cliquant sur Générer la solution dans le menu Générer. Cela crée une bibliothèque de liens dynamiques (DLL) qui peut être utilisée par d'autres programmes. Pour plus d'informations concernant les DLL, consultez DLL.

Pour créer une application qui référence la bibliothèque de classes

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

  2. Dans le volet Types de projet, sous Visual C++, sélectionnez CLR.

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

  4. Dans la zone Nom, tapez un nom pour votre projet, par exemple MyExecRefsAssembly. Dans la liste en regard de Solution, sélectionnez Ajouter à la solution pour ajouter le nouveau projet à la solution qui contient la bibliothèque de classes.

  5. Cliquez sur OK pour créer le projet.

  6. Désactivez l'en-tête précompilé pour le projet MyExecRefsAssembly en le sélectionnant dans l'Explorateur de solutions, puis, dans le menu Projet, cliquez sur Propriétés. Développez le nœud Propriétés de configuration, le nœud C/C++ puis sélectionnez En-têtes précompilés. Dans la liste en regard de Création/utilisation d'un en-tête précompilé , sélectionnez Sans utiliser les en-têtes précompilés. Cliquez sur OK pour enregistrer ces modifications.

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

  1. Après la création de l'application console CLR, l'Assistant génère un programme qui écrit « Hello World » dans la console. Le fichier source généré porte le même nom que celui que vous avez donné au projet lors de sa création. Dans cet exemple, il est nommé MyExecRefsAssembly.cpp.

  2. Pour utiliser les routines mathématiques créées dans la bibliothèque de classe, vous devez les référencer. Pour cela, sélectionnez le projet MyExecRefsAssembly dans l'Explorateur de solutions, puis cliquez sur Propriétés 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 cliquez sur Ajouter une nouvelle référence. Pour plus d'informations, 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 répertorie toutes les bibliothèques que vous pouvez référencer. L'onglet .NET répertorie les bibliothèques incluses avec le .NET Framework. L'onglet COM répertorie tous les composants COM présents sur votre ordinateur. 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 MathFuncsAssembly puis cliquez sur OK.

    Notes

    Vous pouvez référencer directement un assembly depuis le fichier source en incluant la directive #using, par exemple, #using <MathFuncsAssembly.dll>. Pour plus d'informations, consultez #using Directive (C/C++).

  4. Vous pouvez maintenant utiliser la classe MyMathFuncs dans cette application. Dans MyExecRefsAssembly.cpp, remplacez le contenu de la fonction de fichier à l'aide du code suivant.

    // MyExecRefsAssembly.cpp
    // compile with: /clr /FUMathFuncsAssembly.dll
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
        double a = 7.4;
        int b = 99;
    
        Console::WriteLine("a + b = {0}",
            MathFuncs::MyMathFuncs::Add(a, b));
        Console::WriteLine("a - b = {0}",
            MathFuncs::MyMathFuncs::Subtract(a, b));
        Console::WriteLine("a * b = {0}",
            MathFuncs::MyMathFuncs::Multiply(a, b));
        Console::WriteLine("a / b = {0}",
            MathFuncs::MyMathFuncs::Divide(a, b));
    
        return 0;
    }
    
  5. Générez le fichier exécutable en cliquant sur Générer la solution dans le menu Générer.

Pour exécuter l'application

  1. Assurez-vous que MyExecRefsAssembly est sélectionné comme projet par défaut en sélectionnant MyExecRefsAssembly dans l'Explorateur de solutions puis cliquez ensuite sur Définir comme projet de démarrage dans le menu Projet.

  2. Pour exécuter le projet, sélectionnez Exécuter sans débogage dans le menu Débogage. La sortie doit ressembler à l'exemple suivant.

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

Étapes suivantes

Précédent : Procédure pas à pas : création et utilisation d'une bibliothèque statique (C++). Suivant : Après la visite guidée (C++).

Voir aussi

Tâches

Visite guidée de Visual C++