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 :

[DLL/classe template] problème de link


Sujet :

C++

  1. #1
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut [DLL/classe template] problème de link
    Oyo

    Voilà j'ai un petit problème de linkage sous Visual Studio .NET 2002. J'ai créé une dll d'une classe en template, mais il me retrouve pas mes fonction, problème de links...
    Cela marche très bien sous visual studio 6 donc ou est mon erreur ! mystère !

    voilà à quoi ressemble ma classe :

    j'ai tout regroupé sur le .h directement dans la classe car sinon ça merdé avec un .cpp

    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
    #ifdef M3D_DLL_EXPORTS_ENGINE3D
    #define M3D_DLL_API_ENGINE3D __declspec(dllexport)
    #else
    #define M3D_DLL_API_ENGINE3D __declspec(dllimport)
    #endif
     
    #ifndef _MATRIX_H_
    #define _MATRIX_H_
     
    template <typename T>
    class M3D_DLL_API_ENGINE3D matrix
    {
    public:
     // ici mes fonctions toutes implémentés !
    };
    j'ai quand même un .cpp ou je défini M3D_DLL_EXPORTS_ENGINE3D pour que l'export se fasse...

    merci de me dire si vous avez des soluces !

  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
    Il y a beaucoup de chance qu'il n'y ait rien dans ta DLL !
    Une classe template est créée à la compilation avec le bon type SI le code le demande. Or pour une DLL, comment savoir à l'avance quel type utiliser et quelles sont les opérations à exporter pour chaque type ?

  3. #3
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    oki thx donc c pas possible comme ça maintenant je le sais mais c bizard qu en visual studio 6 cela marche alors non ?

  4. #4
    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
    VS6 ne gèrait pas correctement les templates non plus.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Deux options : soit tu laisses ton template dans son en-tête et tu n'exportes rien puisqu'il sera de toute façon inclus et utilisable par le client, soit tu sais exactement avec quels types sera instancié ton template, et tu peux exporter les instanciations correspondantes.

  6. #6
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    comment je peux lui dire d'utiliser les floats par exemple ?

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ca devrait ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template class M3D_DLL_API_ENGINE3D matrix<float>;

  8. #8
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    merci à toi ! ça marche nikel !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/07/2008, 01h37
  2. Réponses: 2
    Dernier message: 08/12/2006, 01h20
  3. Réponses: 15
    Dernier message: 21/08/2006, 01h41
  4. problème classes templates...
    Par youp_db dans le forum C++
    Réponses: 3
    Dernier message: 02/11/2005, 13h04
  5. Problèmes de fonctions membres de classe templates, gcc3.3.6
    Par yves.dessertine dans le forum Autres éditeurs
    Réponses: 12
    Dernier message: 17/10/2005, 21h36

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