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 :

[Visual C++6] Accès à une classe d'une dll


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut [Visual C++6] Accès à une classe d'une dll
    Bonjour,
    J'ai une dll qui contient une classe et je voudrais pouvoir définir des éléments de cette classe dans mon programme principal.
    J'ai les fichiers .dll et .lib de ma dll dans mon répertoire d'éxecution de mon application.
    J'ai bien mis mon .lib dans le setting, objet/library module.

    Mais quand je déclare un élément de la classe de ma dll
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CMaClassDll monElement;
    A la compilation, il me met l'erreur suivante :
    CMaClassDll is not a class or namespace name.

    J'ai du oublier de faire une manip, mais je vois pas quoi ?
    Merci

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut J'ai lu
    J'ai bien lu ça, mais j'ai quand même pas trouvé mon erreur !

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Ne pas oublier de définir _WINDLL dans les paramètres de compil de VisualC++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CMaClassDll DLLDEC monElement;

  5. #5
    Membre expérimenté Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Par défaut
    A priori, tu n'as pas inclus l'entête de définition de la classe exportée.
    http://c.developpez.com/faq/vc/?page...keDLLExtension

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut Alors..
    Ma classe définit dans ma dll est comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #undef MaDLL_CLASS
    #ifdef MaDLL_EXPORTS
    #define MaDLL_CLASS __declspec(dllexport)
    #else
    #define MaDLL_CLASS __declspec(dllimport)
    #endif
     
    class MaDLL_CLASS maClass;

  7. #7
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Ne pas oublier de définir MaDLL_EXPORTS dans les paramètres de compil de Visual C++

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut include
    Il faut obligatoirement que dans mon application, je mette
    ?

    C'est à dire que je suis obligée d'avoir le fichier MaClass.h, les fichiers .lib et .dll ne peuvent pas suffire?

  9. #9
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Oui il faut ton header en +.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut Mais alors
    Si c'est une dll développer par qn d'autres et qu'il fournit juste le .dll et .lib, c'est pas possible de l'utiliser?

  11. #11
    Membre expérimenté Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Par défaut
    Si c'est une dll développer par qn d'autres et qu'il fournit juste le .dll et .lib, c'est pas possible de l'utiliser ?
    Ben... Ca dépend !
    Il est possible de faire des appels dynamiques à des fonctions contenues dans une DLL (voir GetProcAddress()).
    En revanche, lorsque celle-ci est liée statiquement, le compilateur a besoin de la déclaration des symboles.
    MAis peut-être peux tu créer l'entête toi-même si tu connais bien la classe.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut Merci
    Merci bien pour toutes ces réponses, je vais m'en sortir...

  13. #13
    Membre expérimenté Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Par défaut
    Je dis un peu des bêtises : dans un cas comme dans l'autre on a besoin du prototype exact de la fonction.
    Et GetProcAddress() est inutilisable lorsqu'il s'agit de classes exportées, sauf si une fonction de la DLL se charge de l'instanciation d'un objet de la classe.

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

Discussions similaires

  1. [Visual C++/Assembleur] Accès aux éléments d'une classe
    Par barhili04 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 09/11/2009, 17h27
  2. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  3. Acces aux control d'une form depuis une classe
    Par PhilCou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2008, 09h59
  4. Réponses: 6
    Dernier message: 20/04/2007, 15h24
  5. Réponses: 5
    Dernier message: 01/02/2007, 13h14

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