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 :

Exporter une class dans une DLL


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 57
    Par défaut Exporter une class dans une DLL
    Bonjour,

    j'ai une classe qui permet de récupérer et traiter les informations d'un fichier de type configuration (*.ini par exemple).
    Je voudrais exporter cette classe sous forme de DLL.
    Pour info, c'est sous Visual studio c++ 2008.

    Les données de cette class sont en fait une map et je patauge lamentablement pour le template (instantier) cette map (c'est, si j'ai bien compris, une étape obligatoire si les données sont des objets de la STL).
    Vous remarquerez que si le key_type est une std::string, value_type est par contre un chameleon, autre class du projet (en fait qui est capable de renvoyer soit une chaine littérale, soit un nombre suivant ce qui a été lu dans le fichier config).

    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
    22
    23
    24
    25
    26
    27
    /// Config.h
     
    #include <map>
    #include "Chameleon.h"
    #pragma warning (disable : 4231)
     
    #ifdef DLL_EXPORT
    	#define DllImportExport   __declspec( dllexport )
    	#define EXPIMP_TEMPLATE
    #else
    	#define DllImportExport __declspec( dllimport )
    	#define EXPIMP_TEMPLATE extern
    #endif
     
    EXPIMP_TEMPLATE template class DllImportExport --------;
     
    class DllImportExport ConfigFile {
     
      std::map<std::string,Chameleon> contenu;
     
    public:
      ConfigFile(std::string const& configFile);
     
      Chameleon const& Valeur(std::string const& section, std::string const& clef) const;
      Chameleon const& Valeur(std::string const& section, std::string const& clef, double valeur);
      Chameleon const& Valeur(std::string const& section, std::string const& clef, std::string const& valeur);
    };
    Pour être clair, si les données de la class avait été
    std::vector<int> VectorOfInts;
    alors cette ligne aurait été
    EXPIMP_TEMPLATE template class DllImportExport std::vector<int>;

    Merci pour votre aide.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Tiens un peu de lecture sur le sujet : http://www.ddj.com/cpp/184401889

    En résumé : il ne faut que des types de base dans l'interface sinon tu t'exposes à tout un tas de problèmes subtiles et moches (et non std::string n'est pas un type de base).
    Après tu peux toujours bricoler et obtenir quelque chose qui a l'air de fonctionner, c'est toi qui vois...

    MAT.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 57
    Par défaut
    A propos de lecture http://neogamedev.chable.net/index.php?PageID=1001 propose un canevas générique pour réaliser proprement ce genre de manip.

    Mais c'est vrai que c'est long et fastidieux (voire dangereux).
    Je vais me contenter de tout mette dans un seul *.h, mettre ce *.h dans mon répertoire de librairie et ajouter une clause de recherche d'include dans ce répertoire.
    Merci.

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

Discussions similaires

  1. [C#]Accéder à une methode dans une classe d'une DLL externe
    Par Greg34000 dans le forum Services Web
    Réponses: 3
    Dernier message: 28/03/2013, 15h54
  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. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36

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