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 :

Import d'une classe dans une DLL contenant des templates...


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut Import d'une classe dans une DLL contenant des templates...
    Bonjour a tous, ma question est tres simple. J'ai créé une DLL et j'utilise le mécanisme d'import / export suivant :

    si je suis dans ma DLL (je l'exporte donc) :
    #define MA_DLL_USE __declspec(dllexport)
    sinon si je suis hors de la dll (je l'importe depuis une autre) :
    #define MA_DLL_USE __declspec(dllimport)

    et donc ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class MA_DLL_USE MaClasse
    {
    ....
    };
    Donc ca me crée et m'exporte des fonctions de style 'C'.
    Hors il est impossible d'utiliser des templates avec des fonctions de style C bien sur.

    Sauf que ma fonction template, qui est dans ma classe, est bien sur privée et elle n'a pas besoin d'etre exporté a la limite.
    D'ou ma question:

    Peut on exclure cette fonction de l'export et donc du "C-style cast" a l'interieur d'une classe __declspec(dllimport) ?

    Quand je compile ma DLL, ca fonctionne tres bien. Quand je l'inclus dans mon projet, et que je compile ce dernier (donc la dll est en mode import), ca ne fonctionne pas, ca me fait une erreur de compil du genre "impossible d'utiliser les templates avec une fonction de style C".

    Merci pour votre aide, a bientot.

    Alexandre.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Les classes exportées ne peuvent pas être style C, ça n'existe pas
    Si tu entoures la déclaration de fonctions d'un extern C, elles seront exportées au "format" C, à savoir pas de décoration, donc pas de fonctions surchargées non plus.
    Pour les classes, elles sont exportées en "C++", il n'y a pas trop le choix.
    Ensuite, pour les classes templates, c'est encore plus chaud, mais ça ne marche une fois de plus pas avec du C standard - il choisirait comment quel objet utiliser pour l'instanciation ? -

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