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 actif
    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
    Points : 218
    Points
    218
    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 émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568

  3. #3
    Membre actif
    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
    Points : 218
    Points
    218
    Par défaut J'ai lu
    J'ai bien lu ça, mais j'ai quand même pas trouvé mon erreur !

  4. #4
    Membre émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    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 habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    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
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  6. #6
    Membre actif
    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
    Points : 218
    Points
    218
    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 émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    Par défaut
    Ne pas oublier de définir MaDLL_EXPORTS dans les paramètres de compil de Visual C++

  8. #8
    Membre actif
    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
    Points : 218
    Points
    218
    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 émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    Par défaut
    Oui il faut ton header en +.

  10. #10
    Membre actif
    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
    Points : 218
    Points
    218
    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 habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    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.
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  12. #12
    Membre actif
    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
    Points : 218
    Points
    218
    Par défaut Merci
    Merci bien pour toutes ces réponses, je vais m'en sortir...

  13. #13
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    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.
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

+ 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