Bonjour à tous,

J'aimerais implémenter un petit système de plugins en C++ (et donc fournir un petit SDK pour le développement des plugins). Ma première question est: est-il possible d'utiliser des bibliothèques dynamiques (contenant du code C++) dans un programme compiler avec un compilateur différents (typiquement, programme principal avec visual c++ et dll avec mingw) ?

Dans le cas où cela est possible, c'est à ma connaissance une mauvaise idée d'utiliser l'opérateur delete sur un objet alloué par opérateur new issu d'un compilateur diffèrent. Par exemple, mon SDK fourni une classe abstraite:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class IObject
{
virtual ~IObject()
{}
 
virtual int get_int() = 0;
};
Le pluggin définit une class héritant de IObject et exporte la fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
IObject * createObject() {return new MyObject();}
Le programme principal charge la dll et récupère un IObject* via la fonction createObject() définie dans la dll (utilisant donc l'opérateur new de mingw). Il détruit ensuite l'objet avec le delete de visual (je crois). Cela risque-t-il de poser problème?

EDIT: après avoir un peu lu ceci et ceci (referencés dans un précèdent post), cela semble déjà problématique entre différentes versions d'un même compilateur.