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