Maison > développement back-end > C++ > Comment puis-je créer et utiliser des bibliothèques de classes C partagées dynamiques sous Linux ?

Comment puis-je créer et utiliser des bibliothèques de classes C partagées dynamiques sous Linux ?

Susan Sarandon
Libérer: 2024-12-05 05:12:09
original
656 Les gens l'ont consulté

How Can I Create and Use Dynamic Shared C   Class Libraries on Linux?

Bibliothèques de classes C partagées dynamiques sous Linux

Introduction
Création et utilisation de bibliothèques de classes partagées en C sur Linux peut être une tâche difficile. Cet article fournit un guide complet qui couvre le processus de création et d'utilisation de bibliothèques de classes C partagées, y compris la création, la modification et la destruction d'objets.

Création d'une bibliothèque de classes C partagées
Pour créez une bibliothèque de classes C partagée, suivez ces étapes :

  1. Définissez l'interface de classe : Créez un fichier d'en-tête (.h) qui déclare l'interface de classe, y compris les variables et méthodes membres.
  2. Implémentez les méthodes de classe : Créez un fichier source (.cc) qui implémente les méthodes de classe.
  3. Exporter les fonctions de la bibliothèque : Utilisez "extern 'C'" pour exporter les fonctions qui seront utilisées pour créer et détruire la bibliothèque objets.
  4. Compilez la bibliothèque : Compilez les fichiers d'en-tête et les fichiers sources dans une bibliothèque partagée en utilisant les indicateurs appropriés (-shared sous Linux, -dynamiclib sur macOS).

Utilisation d'une bibliothèque de classes C partagée
Pour utiliser une bibliothèque de classes C partagée qui a été créée, suivez ces étapes :

  1. Charger la bibliothèque : Utilisez dlopen() pour charger la bibliothèque partagée en mémoire.
  2. Résoudre les symboles de fonction : Utiliser dlsym() pour résoudre les adresses des fonctions exportées.
  3. Créer et utiliser la bibliothèque objets : Utilisez le pointeur de fonction récupéré de dlsym() pour créer des objets de la classe bibliothèque et appeler leurs méthodes.
  4. Détruisez les objets de la bibliothèque : Une fois terminé, utilisez le pointeur de fonction de destruction pour détruire correctement les objets de la bibliothèque.

Exemple d'implémentation
Les extraits de code suivants démontrer une simple bibliothèque C partagée (myclass.h, myclass.cc) et un programme C (class_user.cc) qui utilise le bibliothèque :

maclasse.h :

class MyClass {
public:
  MyClass();
  virtual void DoSomething();
private:
  int x;
};
Copier après la connexion

maclasse.cc :

extern "C" MyClass* create_object() { return new MyClass; }
extern "C" void destroy_object(MyClass* object) { delete object; }
MyClass::MyClass() { x = 20; }
void MyClass::DoSomething() { cout << x << endl; }
Copier après la connexion

class_user .cc :

MyClass* (*create)();
void (*destroy)(MyClass*);
create = (MyClass* (*)())dlsym(handle, "create_object");
destroy = (void (*)(MyClass*))dlsym(handle, "destroy_object");
MyClass* myClass = (MyClass*)create();
myClass->DoSomething();
destroy(myClass);
Copier après la connexion

Compilation (Linux) :

g++ -fPIC -shared myclass.cc -o myclass.so
g++ class_user.cc -ldl -o class_user
Copier après la connexion

En suivant ces étapes, vous pouvez créer et utiliser avec succès des bibliothèques de classes C partagées dynamiques sous Linux.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal