Bonjour,
Je souhaite intégrer des plug-ins à mon application (suite à la lecture de l'article http://qt.developpez.com/tutoriels/plug-ins/).
Pour reprendre les noms de classe qu'on trouve dans cet article, j'ai une classe OperationInterface de laquelle j'hérite pour créer mon plug-in. Aucun souci.
D'un autre côté, je vais charger mon plug-in dans l'application principale :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 QObject *plugin = loader.instance(); if(plugin) { OperationInterface* op = qobject_cast<OperationInterface*>(plugin); if(op) { m_operationList << op; } }
Seulement voilà, j'ai constaté que la condition if(op) n'était pas fiable. Je peux m'amuser à modifier la classe OperationInterface puis compiler mon plug-in. Ainsi, la classe OperationInterface qui me sert pour compiler mon plug-in n'est pas la même que la classe OperationInterface qui se trouve dans l'application principale.
D'où la question suivante : est-il possible de détecter cette différence, et surtout, comment ? Je souhaite répondre à cette question pour deux raisons :
- si un tiers développe un plug-in, je ne souhaite pas qu'il fasse planter le programme (puisque si j'appelle une méthode de la classe OperationInterface qui se trouve dans l'application principale qui n'existe pas dans la mère du plug-in, c'est un joli plantage en perspective qui se profile).
- si une nouvelle version de l'application est développée, je souhaite détecter les plug-ins périmés des plug-ins à jour.
Merci d'avance![]()
Partager