Bibliothèques dynamiques: comment lister les symboles en c++
Bonjour tout le monde,
Je cherche à trouver un moyen pour extraire l'ensemble des méthodes présentes dans une bibliothèque dynamique (C++) (.so ou .dll). Pour le moment, j'utilise des outils externes comme nm sous linux ou Dependency Walker pour les lister.
J'aimerais pouvoir charger ces méthodes de manière dynamique directement depuis un programme. Est-ce qu'il y a des bibliothèques open source qui permettent ça?
Je pensais à une interface de ce genre:
Code:
1 2 3 4
| //allMethods comprend les différentes méthodes avec leurs arguments associés
std::vector<Methods> allMethods = listMethods("myBiblio.so"); //listMethods("myBiblio.dll");
//allMethods[0].functionType() retournerait un std::function avec le bon paramètre de retour ainsi que les bons arguments
allMethods[0].functionType() func1 = loadMethod<allMethods[0].functionType()>(allMethods[0].name()); |
Il faudra bien sûr que je trouve une méthode pour convertir un string en type (int, double, etc....) voir en classe. (c'est le principe de réflexion non?)
Merci pour tout.