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

C++ Discussion :

d�clarer des objets dans les DLL


Sujet :

C++

  1. #1
    Membre �prouv�
    Inscrit en
    Novembre 2006
    Messages
    1 073
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par d�faut d�clarer des objets dans les DLL
    je sais comment faire passer des integer, des doubles dans des DLL et les d�clarer dans VBA.
    Voici comment je fais:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Declare Function n Lib "V:\finum" Alias "_N@8" (ByVal x As Double) As Double
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    namespace finum 
    {	double N(double x);}

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    #define double_dll __declspec(dllexport) double __stdcall
     
    extern "C" {
    double_dll N(double x){return finum::N(x) ;} 
    }
    Pour l'instant, rien de compliqu�, par ce que se sont des types qui existent en C comme en VBA. Maintenant, quand on cr�e des classes en C, comment les d�clarer dans VBA?
    Par ex, j'ai cr�e une classe (incomplete) "matrice" dans C

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class Matrice
    {
    Matrice(int largeur, int hauteur);
    public:
    Matrice():maLargeur(0),maHauteur(0){}
    int maLargeur;
    int maHauteur;
     
    };
     
    Matrice::Matrice(int largeur, int hauteur):maLargeur(largeur),maHauteur(hauteur){} 
     
    int main()
    {
     Matrice M;
     M.maHauteur=10;
     M.maLargeur=20;
     
    }
    Comment faire pour d�clarer cet objet dans les headers de la DLL?
    Ne serait-ce que pour faire d�clare une macro comme ceci:

    #define double_dll __declspec(dllexport) double __stdcall

  2. #2
    Expert confirm�
    Avatar de Melem
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par d�faut
    Citation Envoy� par deubelte
    Maintenant, quand on cr�e des classes en C++, comment les d�clarer dans VBA?
    On ne peut pas.

  3. #3
    Membre �prouv�
    Inscrit en
    Novembre 2006
    Messages
    1 073
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par d�faut
    merci au moins la r�ponse est claire.
    tout ce qu'on peut d�clarer, ce sont des integer, des doubles, des strings, des arrays, des longs, des booleans....
    Am I right?

  4. #4
    Expert confirm�
    Avatar de Melem
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par d�faut
    Citation Envoy� par deubelte Voir le message
    merci au moins la r�ponse est claire.
    tout ce qu'on peut d�clarer, ce sont des integer, des doubles, des strings, des arrays, des longs, des booleans....
    Am I right?
    Oui (j'esp�re qu'en parlant de string tu veux parler d'un tableau de caract�re et non d'un objet std::string), car la repr�sentation en m�moire d'un objet C++ n'a rien de standard.

    Par contre tu peux bien s�r cr�er une DLL de classes C++, utilisable uniquement en C++. Par exemple :

    cppdll.h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #ifndef H_CPPDLL_H
     
    #define H_CPPDLL_H
     
    #ifdef CPPDLL_EXPORTS
    #   define DECLSPEC __declspec(dllexport)
    #else
    #   define DECLSPEC __declspec(dllimport)
    #endif
     
    class DECLSPEC cppInteger /* Cette classe est exportee */
    {
    protected:
        int value;
     
    public:d
        DECLSPEC void setValue(int val);
        DECLSPEC int getValue();
    };
     
    #endif
    cppdll.cpp :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "cppdll.h"
     
    void cppInteger::setValue(int val)
    {
        value = val;
    }
     
    int cppInteger::getValue()
    {
        return value;
    }
    Pour utiliser la classe cppInteger dans une application, inclure cppdll.h, se lier avec cppdll.lib et avoir cppdll.dll � l'ex�cution.

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Si tu veux faire une DLL contenant des classes utilisables depuis VB, tu dois faire une DLL COM (ou une DLL .Net utilisable depuis COM).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre �prouv�
    Inscrit en
    Novembre 2006
    Messages
    1 073
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par d�faut
    Si tu veux faire une DLL contenant des classes utilisables depuis VB, tu dois faire une DLL COM (ou une DLL .Net utilisable depuis COM).
    possible de faire ca avec Visual Express?
    as tu de la doc?

    COM=common objet ??

  7. #7
    Expert confirm�
    Avatar de Melem
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par d�faut
    Citation Envoy� par deubelte Voir le message
    possible de faire ca avec Visual Express?
    as tu de la doc?

    COM=common objet ??
    COM signifie Componnent Object Model. C'est une technologie MS ind�pendante de toute plateforme et de tout langage de programmation qui permet de cr�er des composants (des classes) utilisables depuis � peu n'importe quel langage. Il vaut mieux bien ma�triser au moins un langage de programmation avant de s'int�resser � COM.

Discussions similaires

  1. Instanciation automatique des objets dans les formulaires
    Par vincent7894 dans le forum Spring Web
    R�ponses: 2
    Dernier message: 21/02/2012, 09h58
  2. R�ponses: 3
    Dernier message: 19/08/2011, 13h09
  3. R�ponses: 1
    Dernier message: 07/01/2010, 16h16
  4. J'ai pas les infos des objets dans l'�diteur
    Par mister3957 dans le forum MFC
    R�ponses: 3
    Dernier message: 20/02/2006, 19h43
  5. Gestion des versions d'objets dans les SGBD
    Par bennus dans le forum D�cisions SGBD
    R�ponses: 3
    Dernier message: 09/05/2005, 12h57

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