IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Comment appeller une méthode d'une classe d'une dll?


Sujet :

MFC

  1. #1
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comment appeller une méthode d'une classe d'une dll?
    Je souhaite faire une dll, en C++, avec VC++6.0 (+entreprise edition+visual fortran 6.1.0) et pouvoir utiliser les objets définis dans la dll avec une application.
    J'ai bien noté dans :
    http://c.developpez.com/faq/vc/?page...keDLLExtension
    Comment faire une DLL d’extensions ?
    Une DLL d’extensions permet l’export de classes complètes que le client peut instancier et même dériver.
    Note : L’utilisation d’une DLL d’extensions impose l’utilisation des MFC en DLL partagées.

    Mais voila je souhaiterais éviter d'utiliser MFC pour être au maximum portable.

    Mon visual studio pour un nouveau projet me propose Win32 Dynamic-Link Library,
    et je peux choisir A dll that exports some symbols
    Si j'appelle mon projet dll2
    dans le fichier dll2.h j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // This class is exported from the dll2.dll
    class DLL2_API CDll2 {
    public:
    	CDll2(void);
    	// TODO: add your methods here.
    };
    Tout se compile bien, et se link bien avec l'application.

    Si maintenant j'ajoute une méthode testout et une variable itest:
    dans dll.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // This class is exported from the dll2.dll
    class DLL2_API CDll2 {
    public:
    	CDll2(void);
    	// TODO: add your methods here.
    	int testout();
    private:
    	int itest;
    };
    dans dll2.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int CDll2::testout()
    {	return(itest);
    }
    Tout se compile bien, et se link bien avec l'application (Win32 console application) en faisant l'include qui va bien et en ajoutant le dll2.lib aux librairies.
    Voici mon application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main(int argc, char* argv[])
    {	DLL2_API CDll2 Objet1;
    	return 0;
    }
    Par contre dès que j'appelle la methode,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main(int argc, char* argv[])
    {	DLL2_API CDll2 Objet1;
    	Objet1.testout();
    	return 0;
    }
    Je n'arrive pas à me débarrasser de :
    error LNK2001: unresolved external symbol "__declspec(dllimport) class CDll2 Objet1

    Dois-je me resoudre à passer les infos par des fonctions en C?
    Ce qui me semble curieux c'est qu'avec Win32 Dynamic-Link Library Visual me propose bien une classe, mais que je n'aurais pas le droit d'utiliser!!!
    Ou alors j'ai loupé un concept!
    Merci d'avance pour votre aimable aide.

  2. #2
    Membre habitué

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Points : 171
    Points
    171
    Par défaut
    Cher Jeromino,

    Pourquoi

    DLL2_API CDll2 Objet1;

    Depuis quand ?! Simplement

    CDll2 Objet1;

    Et voilà … ca marche.

    Salut. Fredy

  3. #3
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Cher sauveur,
    Effectivement ca marche!!!
    Mais pourquoi je n'ai pas eu de message d'erreur avant l'appel de la methode
    Grrr
    Eh bien merci beaucoup Fredy!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/07/2014, 18h41
  2. NoClassDefFound pour une inner classe dans une méthode de la classe
    Par joel.drigo dans le forum Général Java
    Réponses: 4
    Dernier message: 19/07/2013, 14h40
  3. Appeler une méthode dans la classe main
    Par Palsajicoco dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 04/05/2011, 11h40
  4. [WPF] appeler une méthode de la classe "parente"
    Par JuTs dans le forum Framework .NET
    Réponses: 3
    Dernier message: 19/10/2007, 09h44
  5. Réponses: 6
    Dernier message: 25/04/2007, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo