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
Susan Sarandonoriginal
2024-12-05 05:12:09598parcourir

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;
};

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; }

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);

Compilation (Linux) :

g++ -fPIC -shared myclass.cc -o myclass.so
g++ class_user.cc -ldl -o class_user

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:
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