wizzo
Messages postés35Date d'inscriptionjeudi 12 septembre 2002StatutMembreDernière intervention25 octobre 2006
-
23 oct. 2006 à 16:36
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
25 oct. 2006 à 21:41
Bonjour,
J'essaye actuellement de charger dynamiquement une dll.
J'arrive à charger une méthode C++ d'une classe grace à un EXPORT dans un .def. Cependant, la methode est identifié par son nom, et le nom de la classe de figure pas. Pour la class suivante :
class
akClass {
public:
int Function(
void);
};
J'aimerai pouvoir specifier dans le .def :
LIBRARY lib
EXPORTS
akClass::Function
Le but étant d'exporter 2 méthodes depuis la dll, ces deux methodes ayant le mme nom, mais etant dans 2 classes differentes, et ayant donc 2 implementations differentes.
Cependant, j'obtiens dans ce cas (à la compilation) le message suivant :
lib.def : error LNK2001: unresolved external symbol akClass::Function
Est-ce au moins possible ?? et si oui, comment ?
Merci d'avance
wizzo
wizzo
Messages postés35Date d'inscriptionjeudi 12 septembre 2002StatutMembreDernière intervention25 octobre 2006 25 oct. 2006 à 19:00
Dès fois que mes idées ne soient pas clair :
Ce que je veux faire est en fait tres proche des dll d'extension deMFC (mais sans utiliser les MFC), cad pouvoir dans une dll créer une class (akClass) qui hérite d'une classe dispo dans mon framework (akMotherClass), et pouvoir depuis le .exe qui charge la dll appeler les methodes surchargées par akClass.
Pour ça j'ai :
- Exporté les methodes surchargée de akClass grace à un .def
- Créé une classe 'virtuelle' dans le .exe qui recupere les methodes avec un GetProcAddress
ya t il moyen de faire plus simple ?
De plus lorsque j'accède aux methodes de la dll, je ne peux pas acceder au données membres sous peine de plantage....
Vous n’avez pas trouvé la réponse que vous recherchez ?
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 25 oct. 2006 à 21:41
Tu peux faire un genre de singleton que tu instancie directement dans le DLLMAIN() qu'une seule fois, et tu exportes l'objet instancié qui te permettra d'acceder à toutes la classe.
Mais je n'ai jamais utilisé ce genre de code.
Bonne continuation.