Dynamic dll et GetProcAddress

wizzo Messages postés 35 Date d'inscription jeudi 12 septembre 2002 Statut Membre Dernière intervention 25 octobre 2006 - 23 oct. 2006 à 16:36
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 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

5 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
23 oct. 2006 à 23:04
utilise plutot que le .def le mot clef de ton compilateur pour exporter une classe, genre


class __declspec(dllexport) akClass
{ spécifications };
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
23 oct. 2006 à 23:19
Ou tu peux faire dan le .def un genre d'alias
EXPORT
functionSameName = otherName
0
wizzo Messages postés 35 Date d'inscription jeudi 12 septembre 2002 Statut Membre Dernière intervention 25 octobre 2006
25 oct. 2006 à 18:50
en effet, je viens de faire ça avec les alias.

Pour les __declspec(dllexport), je croyais que ça ne marchais que pour les imports/exports statics ?
0
wizzo Messages postés 35 Date d'inscription jeudi 12 septembre 2002 Statut Membre Dernière intervention 25 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....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
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.
0
Rejoignez-nous