Je crée un éditeur de texte multiplateforme en C++. Je voudrais avoir une base très basique, puis implémenter toutes les fonctionnalités à travers des plug-ins. Mais, malheureusement, je n'arrive à rien dans la conception du système de plug-in. Comment cela se fait-il normalement? Quelqu'un peut me diriger dans la bonne direction? Je ne sais pas si c'est important, mais j'utilise le kit de widgets wxWidgets.Système de plugin pour éditeur de texte écrit en C++
Répondre
Vous pouvez commencer par avoir une classe de base définissant une interface de plugin spécifique, à savoir: TextTransformPlugin, avec une méthode prenant une chaîne et renvoyant une chaîne (virtuelle).
Chaque plugin hériterait de cette interface et vous construiriez cette classe par exemple: SpanishTranslateTransformPlugin dans une bibliothèque dynamique (fichier .so). Dans le programme, vous utilisez dlopen pour ouvrir la bibliothèque (voir here pour un exemple C++). Comme vous ne pouvez pas appeler la classe constuctor, dans la bibliothèque so, vous définissez une fonction standard (même nom pour tous les plugins, disons create() et lui donnons des conventions d'appel C pour que vous puissiez utiliser dlsym pour obtenir le symbole et lancer à une fonction renvoyant un TextTransformPlugin et l'appeler.
extern "C" {
TextTransformPlugin * create(); // this would return new SpanishTranslateTransformPlugin
}
de cette façon, vous obtiendrez un objet TextTransformPlugin qui est le plug-in. Comme les méthodes d'interface sont virtuelles, les méthodes concrètes seront appelés.
vous devra prendre soin du cycle de vie du plugin, en les gardant dans un registre, sachant quand les utiliser, et finalement les détruire et fermer les bibliothèques
Notez que Windows n'a pas dlfcn.h où vous trouvez dlopen. Il existe des fonctionnalités similaires dans l'API LoadLibrary, mais vous devez extraire les plates-formes vous-même.
Si vous utilisez un framework multiplateforme comme Qt, vous obtenez gratuitement une grande partie de la plate-forme et cela fonctionne sur toutes les plates-formes supportées. Voici un exemple d'application de peinture connectable:
http://doc.qt.nokia.com/latest/tools-plugandpaint.html
Comme vous l'avez mentionné que vous utilisez wxWidgets, cela devrait être la fonctionnalité équivalente prise en charge des plates-formes multiples:
http://docs.wxwidgets.org/2.8/wx_wxdynamiclibrary.html et un exemple complet: http://wiki.wxwidgets.org/Programs_That_Support_Plugins
Here est un meilleur fil que vous trouverez sur Internet
- 1. Eclipse Plugin - Éditeur de texte - SingleLineRule
- 2. Code GUI non documenté écrit dans un éditeur de texte
- 3. éditeur de texte en utilisant c
- 4. C# une sorte de système de plugin
- 5. Indentation Kate (éditeur de texte), C++
- 6. bon texte/éditeur de code pour Linux
- 7. Joomla éditeur plugin développement
- 8. Un éditeur de texte pour aspx?
- 9. Création d'un éditeur de texte 3D en C++
- 10. C# écrit le graphe dans le système de coordonnées
- 11. Éditeur de texte wordpress website
- 12. éditeur de texte en plein écran SFML
- 13. Puis-je utiliser un autre système de construction pour mon module d'extension Python (écrit en C++)?
- 14. éditeur de texte riche
- 15. Meilleur éditeur de texte pour NLP
- 16. éditeur de texte HTML pour page Web
- 17. éditeur de texte enrichi pour JSF 2
- 18. Éditeur de texte vietnamien en XCode
- 19. Objective C éditeur pour Windows
- 20. Éditeur de texte enrichi
- 21. éditeur de texte riche pour textarea
- 22. Je veux ouvrir un fichier texte dans un éditeur de texte par programmation en c/C++
- 23. Déclencheur d'horodatage pour pgAdmin écrit en C
- 24. J'ai écrit un plugin pour curseur d'image
- 25. Système de connexion comme stackoverflow, écrit en php
- 26. HTML JS éditeur de texte
- 27. Programme de test d'unité écrit en C
- 28. Éditeur Léger IDE/Texte Léger pour Windows - Développement C++
- 29. Problèmes de compatibilité binaire du système de plugin C#
- 30. Gratuit RTE [éditeur de texte enrichi] aide nécessaire pour l'intégrer
double possible de [ce qui est sûr pour un système de plug-in C++?] (http: // Stacko verflow.com/questions/43322/whats-safe-for-a-c-plug-in-system) – Mat
Avez-vous trouvé ma réponse correcte? prendre soin de l'accepter? – duncan