Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
18 avril 2010 à 15:56
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
6 mai 2010 à 13:12
Salut, pour les fonctions j'arrive à éviter la décoration C++ du nom avec extern "C" mais est-ce possible de l'éviter pour les méthodes d'une classe ? merci.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 1 mai 2010 à 20:16
Salut,
A mon avis c'est tout à fait mort d'essayer de ne pas avoir de décoration sur une méthode C++. Comment serait par exemple géré la surcharge (2 méthodes de même noms mais avec paramètres différents) ? Ou comment gérer le cas de deux classes exposant une méthode avec le même nom ?
Bon après, on peut toujours bidouiller. Par exemple, rien n'empêche de faire une petite retouche sur la table d'export !
On peut aussi bidouiller une fonction C exportée qui renvoie un tableau de pointeur sur les méthodes.
Bref, on peut faire beaucoup de choses très sales...
Mais avant tout, il y a quand même un gros problème : Une méthode (Non statique) prend en premier argument caché un pointeur sur l'objet... Et un objet C++, ça peut avoir une représentation en mémoire particulièrement compliqué et surtout qui dépend du compilo. Et je ne parles pas des allocations et constructeurs destructeurs...
Bref, exporter des fonctions et/ou méthodes C++, c'est mal. En général, ceux qui font des dlls en C++ ajoutent une couche C par dessus et exporte ça (Exemple : ODE).