| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
    Dynamique Appel de fonctions dans les DLL
    Une bibliothèque de liens dynamiques ou DLL , permet à une application de charger uniquement le code exécutable minimum nécessaire en mémoire au moment de l'exécution . Chaque fois que le programme appelle une fonction dans une DLL, le système d'exploitation charge la DLL en mémoire en conformité avec les spécifications du programmeur . Tant que le programme en cours ne fait pas référence à une fonction DLL , DLL qui n'a pas besoin d' occuper l'espace . Cela économise beaucoup de ressources et augmente les performances d'exécution. Si la bibliothèque étaient statiques , tout le code de la bibliothèque sera annexée au code exécutable du programme principal et le programme géant aurait à rester dans la mémoire pendant toute la durée de l'exécution. La version Unix ou Linux d'une DLL Windows est une bibliothèque partagée , construite en conséquence avec l'extension ". So . " Windows , Unix et Linux ont des conventions spécifiques pour accéder aux fonctions dans les DLL ou les bibliothèques partagées. Exporter Objets Windows DLL Utilisation dllexport mots-clés

    Pour faire une fonction, une classe , un élément de données ou la fonction de membre de classe accessible au programme Windows appelant , vous devez exporter le premier. Une classe ou fonction peuvent être exportés au cours de sa définition en utilisant le " __declspec (dllexport ) " mot-clé avant le nom de fonction, une classe ou une variable , comme suit:

    void __ declspec ( dllexport ) MyClass : CObjectName publique { ..... }

    Dans le fichier d'en-tête de DLL, mettre ce mot clé avant le nom de la fonction dans une déclaration de prototype. Le " __declspec (dllexport ) " mot-clé stocke les noms de fonction dans la table d'exportation de la DLL. Pour économiser de l'espace que ce tableau occupe , utilisent des nombres ordinaux au lieu des noms de fonctions.
    Exportation DLL Windows objets dans les fichiers de définition de module

    Comme une alternative à la clé " __declspec (dllexport ) , " créer un fichier de définition de module qui indique le nom de la bibliothèque , description facultative et répertorie les noms de fonctions, les classes et les variables de données dans la DLL avec des valeurs ordinales en option. La valeur ordinale d'une fonction varie de 1 à N, où N est le nombre de fonctions dans la DLL . Le fichier de définition de module a l'extension suivante est un exemple d'un fichier de définition de module, ou un fichier DEF " DEF . ». : .

    BIBLIOTHÈQUE ReportWriterDESCRIPTION Cette bibliothèque dynamique contient les fonctionnalités de génération de rapport de MyProduct.RPT_setup @ 1RPT_design @ @ 2RPT_run 3RPT_print @ 4

    Si vous créez une classe DLL Microsoft Foundation aide de AppWizard de Visual Studio , l'Assistant génère un fichier squelette. DEF pour le DLL et l'ajouter au projet. Ajoutez des entrées pour les fonctions DLL dans ce fichier. DEF pour les exporter. Le format du prototype de fonction utilisée par le programme appelant doit correspondre au format des entrées de fonction dans le fichier. DEF . Soit utiliser définitions simples dans les deux endroits , ou les définitions dans les deux endroits de manière cohérente.
    Importation et d'exportation Extension DLL

    Microsoft compilateur spécifique , générée par le compilateur Fondation DLL d'extension de classe se compose généralement de classes réutilisables dérivées de types de classes MFC existantes. Elles sont construites en utilisant une version DLL de MFC , et peuvent être appelées à partir d'applications et les DLL construit en utilisant cette version partagée des MFC . Pour exporter des classes dans les DLL d'extension , utilisez la macro " AFX_EXT_CLASS " avant le nom de la classe comme ceci : Classe CMyViewClass AFX_EXT_CLASS : publique CView {//corps de la classe }; Si vous utilisez un fichier DEF , ajoutez le code de macro suivant au début . et à la fin de l'entête du fichier DLL étendue: # undef AFX_DATA # define AFX_DATA AFX_EXT_DATA // étendu # undef AFX_DATA # define AFX_DATA

    Ces directives préprocesseur assurez-vous que les variables MFC et dérivations et exportées de la DLL prolongée .
    Importation de fonctions DLL

    l'autre côté de l'exportation d'objets à partir de DLL est de les importer dans des applications utilisant le " __declspec (dllimport ) "mot-clé .
    exportation C Fonctions pour une utilisation dans C ou C + + exécutables

    Si le programme ou la fonction d'appel est écrit en C + + , utilisez la " extern C " directive de préprocesseur dans l'en-tête de la DLL si les fonctions DLL sont écrites en C

    Voici un exemple ://MyDLLFunctions.h # ifdef __ cplusplusExtern "C" {# endif__declspec (dllimport ) vide MyFunc01 (); __declspec (dllimport ) vide MyFunc02 (); # ifdef __ cplusplus } /consoles /finaux pour " extern C " directive # endif

    Comme une alternative à la spécification "C externe" directive dans l'en-tête de DLL , vous pouvez inclure le fichier d'en-tête de DLL avec un " Externe" C " " wrapper conditionnellement , comme suit :

    # ifdef __ cplusplusExtern "C" { # endif

    # include " DllPath \\ MyDLLFunctions.h "

    # ifdef __ cplusplus } //fin parenthèses pour " extern C " directive # endif

    Previous :

    next :
      articles connexes
    ·Comment compiler C + + dans Prompt 
    ·Comment rédiger un plan de test 
    ·Comment s'assurer qu'un objet est supprimé en C + + 
    ·Comment écrire une ligne commutateur combinaison de to…
    ·Comment renommer NIB à XIB dans Xcode 
    ·Comment créer Porte En GtkRadiant 
    ·Comment exposants d'entrée en C 
    ·Comment faire votre propre PSP jeu 
    ·Comment faire pour modifier les titres dans la barre de…
    ·Comment faire un graphique en mouvement en C # 
      articles en vedette
    ·Comment supprimer tous les zéros sur les listes en Pyt…
    ·Comment construire un site Web dynamique 
    ·Java et résolues erreur de compilation 
    ·Python Certification 
    ·Comment mettre à jour un objet dans une collection Ave…
    ·Types de clauses de Horn en Prolog 
    ·Comment dessiner le texte dans Xcode d'Apple 
    ·Comment remplacer une date en Python 
    ·Comment remplacer un caractère de code ASCII équivale…
    ·Caractéristiques API 
    Copyright © Connaissances Informatiques http://fr.wingwit.com