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:
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:
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.
Partager