Maison >développement back-end >C++ >Comment puis-je créer et utiliser des bibliothèques partagées dynamiques (DSL) en C sous Linux ?
Création et utilisation de bibliothèques partagées dynamiques en C sous Linux
Les bibliothèques partagées dynamiques (DSL) permettent à plusieurs programmes de partager du code, réduisant ainsi l'utilisation de la mémoire et améliorer l'efficacité. En C , les DSL permettent la création de bibliothèques de classes réutilisables accessibles à plusieurs exécutables.
Création du DSL
Pour créer un DSL, définissez l'interface de classe et l'implémentation dans l'en-tête et les fichiers sources (par exemple, myclass.h et myclass.cc). Assurez-vous que la classe inclut un destructeur virtuel et des méthodes publiques marquées extern "C" pour faciliter le chargement des symboles.
Utilisation du DSL
Pour utiliser un DSL dans un exécutable séparé, effectuez les étapes suivantes :
Exemple Code
maclasse.h
#include <iostream> class MyClass { public: MyClass(); virtual void DoSomething(); private: int x; };
maclasse.cc
#include "myclass.h" extern "C" MyClass* create_object() { return new MyClass; } extern "C" void destroy_object(MyClass* object) { delete object; } MyClass::MyClass() { x = 20; } void MyClass::DoSomething() { std::cout << x << std::endl; }
class_user .cc
#include <dlfcn.h> #include <iostream> #include "myclass.h" int main() { void* handle = dlopen("./myclass.so", RTLD_LAZY); MyClass* (*create)(); void (*destroy)(MyClass*); create = (MyClass* (*)())dlsym(handle, "create_object"); destroy = (void (*)(MyClass*))dlsym(handle, "destroy_object"); MyClass* myClass = create(); myClass->DoSomething(); destroy(myClass); }
Compilation et Exécution
Sous Mac OS X :
Sous Linux :
Exécutez class_user pour utiliser la bibliothèque partagée MyClass. Il instanciera et utilisera l'objet MyClass avec succès.
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!