J'ai un ancien code C++, j'essaie de le re-concevoir. Je souhaite retirer une partie du code du projet en tant que bibliothèque partagée ".so" et les charger dynamiquement par "dlopen".Comment dire à l'éditeur de liens C++ que certaines classes seront ajoutées plus tard par dlopen
J'ai écrit un mécanisme de chargement dynamique qui peut charger dynamiquement de nouveaux modules lors de l'exécution.
Maintenant, je veux découpler les modules existants du projet principal. Par exemple, j'ai extrait le module "X" du projet principal et créé une bibliothèque partagée qui peut être chargée plus tard, mais certaines parties du projet principal utilisent directement les classes du module X et je ne peux pas les modifier pour le moment.
Je peux compiler le projet en utilisant les fichiers d'en-tête du module X, mais l'éditeur de liens rejette l'erreur "référence non définie". Comment puis-je dire à l'éditeur de liens c + + que ces classes seront ajoutées plus tard par le mécanisme dlopen lors de l'exécution?
note: Je peux lier et exécuter le projet en copiant le fichier ".so" créé du module X dans le dossier "/ lib" et l'utiliser lors de la liaison par le drapeau "-lX", mais si je supprime ce fichier/lib Le projet échoue au démarrage.
Oui, mais je souhaite supprimer la dépendance au temps de liaison. J'ai changé les classes X en classes proxy qui appellent des fonctions de module découplées. – Emech