Question

Je suis sûr que ce problème a déjà été résolu et je suis curieux de savoir comment il a été résolu. J'ai un code dans lequel, lors de l'exécution, je souhaite analyser le contenu d'un répertoire et charger les fonctionnalités.

Plus précisément, je travaille avec un moteur de script auquel je souhaite pouvoir ajouter des appels de fonction. Je veux que le moteur principal fournisse des fonctionnalités très limitées. L'utilisateur doit pouvoir ajouter des fonctions supplémentaires via des bibliothèques tierces, que je souhaite que le moteur recherche et charge. Comment cela se fait-il?

Était-ce utile?

La solution

Cela dépend de la plate-forme. Sur win32, vous appelez LoadLibrary pour charger une DLL, puis vous en obtenez des fonctions avec GetProcAddress . Sur les plateformes Unixy, les équivalents sont dlopen et dlsym .

Autres conseils

Vous pouvez utiliser les fonctions POSIX dlopen / dlsym / dlerror / dlclose sous Linux / UNIX pour ouvrir de manière dynamique des bibliothèques partagées et accéder aux symboles (y compris les fonctions) qu'elles fournissent. Voir la page de manuel pour plus de détails.

Si vous souhaitez utiliser une bibliothèque pour cela, je vous recommanderais GLib (la bibliothèque d’utilitaires située sous le toolkit GTK + UI). Il présente le " GModule " sous-API, qui fournit un moyen propre et portable de le faire. Cela vous évite d'avoir à emballer vous-même les appels pertinents et vous apporte également le reste de GLib qui est très très pratique pour avoir des programmes en C de toutes tailles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top