Maison  >  Article  >  développement back-end  >  ## Comment exporter une classe C entière à partir d'une DLL ?

## Comment exporter une classe C entière à partir d'une DLL ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 08:47:29370parcourir

## How do you Export an Entire C   Class from a DLL?

Exportation d'une classe C entière à partir d'une DLL

Liaison tardive avec chargement dynamique de bibliothèque

Bien que l’exportation de fonctions de niveau C à partir d’une DLL soit simple, la gestion des classes exportées nécessite une approche différente. La liaison tardive, obtenue grâce au chargement dynamique de bibliothèques, fonctionne bien pour les fonctions mais présente des défis pour les classes.

Chargement dynamique des classes

Malheureusement, le chargement dynamique des classes n'est généralement pas pris en charge . Créer un lien vers une classe définie dans une DLL et la charger dynamiquement nécessite des techniques spéciales :

  • Fonction d'usine : Une fonction d'usine peut être implémentée pour créer des objets à l'aide d'un assemblage pour établir des décalages d'objets.
  • DLL à chargement différé : Les DLL à chargement différé peuvent être utilisées pour différer le chargement jusqu'à l'exécution.

Liaison au moment de la compilation avec en-tête et Lib

Pour la liaison au moment de la compilation, la technique du préprocesseur impliquant l'exportation de la classe avec __declspec(dllexport) et l'inclusion de l'en-tête et la liaison vers le fichier lib reste l'approche préférée. Visual Studio fournit ces macros pour faciliter leur utilisation.

Conclusion

Bien que la liaison tardive puisse être souhaitable pour plus de flexibilité, la liaison implicite est plus pratique pour exporter des classes C à partir de DLL. La technique de préprocesseur décrite ci-dessus permet un accès transparent aux classes exportées au moment de la compilation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn