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 :

[CString dans un dll] Probleme de lien avec CString


Sujet :

MFC

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut [CString dans un dll] Probleme de lien avec CString
    Bonjour,

    J'ai un probleme avec une dll Win32 exportant des classes contenant des methode retournat un CString.
    Les methode qui retournent des entiers ou meme des CArray sont retrouvées lors de l'edition de lien mais toutes les methodes retournat des CString donne lieu a une erreur du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > __thiscall CDpwsService::GetSubscriptionId(void)const " (__imp_?GetSubscriptionId@CDpwsService@@QBE?AV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ) référencé dans la fonction "public: virtual int __thiscall CMetaDataDlg::OnInitDialog(void)" (?OnInitDialog@CMetaDataDlg@@UAEHXZ)
    Ma classe est declaree comme ça:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #ifndef DPWS_SERVICE_H
    #define DPWS_SERVICE_H
     
    #ifdef DPWS_SERVICE_EXPORTS
    #define DPWS_SERVICE_API __declspec(dllexport)
    #else
    #define DPWS_SERVICE_API __declspec(dllimport)
    #endif
     
    #include <AfxTempl.h>
     
    #include "DpwsWsdlInfo.h"
     
    class DPWS_SERVICE_API CDpwsService
    {
    public:
        CDpwsService(void);
        ~CDpwsService(void);
     
        void SetServiceId(CString aserviceId);
        void SetAddress(CString aAddress);
        void SetSubscriptionId(CString aSubscriptionId);
     
        CString GetServiceId() const;
        CString GetAddress() const;
        CString GetSubscriptionId() const;
        int GetNbWsdl() const;
     
        void AddWsdl(CDpwsWsdlInfo * aWsdlInfo);
        const CDpwsWsdlInfo * GetWsdlAt(int i) const;
     
    private:
        CString m_serviceId;
        CString m_address;
        CString m_subscriptionId;
     
        //WSDLS Info
        CArray < CDpwsWsdlInfo * > m_wsdlsInfo; 
    };
    #endif
    Je suppose qu'il y a un "bins" avec le type de retour (un template) et les fameux warning 4251, mais je ne trouve pas le moyen de contourner ce pb.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    il faut que tu fasses une dll d'extension pour exporter une classe.
    voir faq:http://c.developpez.com/faq/vc/?page...keDLLExtension

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut .
    Humm, ok pour le tuto mais je ne veut pas etendre uen classe MFC moi, je souhaite simplement créé une classe qui utilise et renvoie des classes MFC (CArray et CString)
    Je ne vois pas vraiment l'utilité de la classe d'extension MFC, pourquoi ne pas faire simplent une classe qui utilise les MFC ?

    [Edit] Au temps pour moi
    http://www.codeguru.com/cpp/cpp/cpp_...cle.php/c4017/

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut .
    Testé et approuvé Merci ^^

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

Discussions similaires

  1. Lien avec getURL
    Par NapsterVB dans le forum Flash/Flex
    Réponses: 1
    Dernier message: 05/11/2014, 15h43
  2. [4.1] Problème de lien
    Par hedibox dans le forum Laravel
    Réponses: 1
    Dernier message: 16/10/2013, 17h49
  3. Probleme de lien avec un fichier *.dot
    Par bartimeus35 dans le forum Word
    Réponses: 2
    Dernier message: 24/06/2009, 12h45
  4. probleme de lien avec ATLAS CBLAS
    Par clement.rey dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 13/06/2008, 09h58
  5. Probleme avec une MessageBox dans une DLL
    Par marcootz dans le forum C++
    Réponses: 14
    Dernier message: 28/08/2007, 10h23

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