Création et utilisation de bibliothèques de classes C partagées dynamiques sous Linux
Création d'une bibliothèque de classes partagées
Pour créer une bibliothèque de classes C partagée, vous pouvez suivre ces étapes :
- Définissez le fichier d'en-tête, .h, en déclarant la classe et ses fonctions membres. N'oubliez pas d'utiliser des fonctions de membre virtuel pour activer la liaison dynamique.
- Implémentez la classe dans un fichier source distinct, .cc, y compris le fichier d'en-tête.
- Définissez des fonctions C externes pour la création d'objets (create_object) et destruction (destroy_object).
- Utilisez #include pour incorporer le fichier d'en-tête et en utilisant l'espace de noms std ; pour utiliser l'espace de noms standard.
- Compilez la bibliothèque en utilisant g -fPIC -shared sous Linux ou g -dynamiclib -flat_namespace sous Mac OS X, en générant un fichier objet partagé (.so).
Utiliser des bibliothèques de classes partagées
Pour utiliser des bibliothèques de classes partagées dans un exécutable :
- Incluez les fichiers d'en-tête nécessaires.
- Chargez la bibliothèque partagée à l'aide de dlopen.
- Utilisez dlsym pour obtenir des pointeurs de fonction pour create_object et destroy_object.
- Créez une instance de la classe à l'aide de create_object.
- Appelez les fonctions membres sur l'instance.
- Détruisez l'instance à l'aide de destroy_object.
- Fermez la bibliothèque partagée à l'aide de dlclose.
Conseils supplémentaires pour les systèmes de plugins
Pour un système de plugins, dérivez vos classes d'une classe de base et rendez virtuelles toutes les fonctions requises. Les auteurs de plugins peuvent remplacer les virtuels et implémenter les fonctions create_object et destroy_object. De cette façon, votre application principale reste inchangée.
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