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

Visual C++ Discussion :

passer une string dans une DLL C++ (pas VC++)


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    45
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 45
    Par d�faut passer une string dans une DLL C++ (pas VC++)
    Bonjour,

    J'ai un bout de code stupidissime qui passe un 'string' � une fonction et vice versa:
    #include "stdafx.h"
    #include <string>
    using std::string;

    string DLLstr;

    string Get_StringName(){ return DLLstr; }

    void Set_StringName(string str){ DLLstr = str; }

    int _tmain()
    {
    string str = "str1";
    Set_StringName(str);
    string samestr = Get_StringName();
    return 0;
    }

    J'ai par ailleurs besoin de faire de m�me de/vers une DLL style:
    extern "C" class __declspec(dllexport) ClassName

    Le Linker refuse obstin�ment avec le message d'erreur suivant:
    c:\mydocs\visual studio 2005\projects\nxl_cpp\nxl_dll\nxl_dll.h(84) : warning C4251: 'CNXL_DLL::m_strNNName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CNXL_DLL'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>,
    1> _Ax=std::allocator<char>
    1> ]

    Il s'agit d'un simple string et accessors pour nommer chaque objet.
    Que conseillez vous?

    D'avance merci,
    bv

  2. #2
    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
    D�j�, retire le extern "C" pour ta d�claration de ClassName : Une classe est un objet compl�tement C++, qui ne peut pas �tre extern "C"; je suis m�me surpris que �a compile.

    Pour le reste, c'est un probl�me assez compliqu� qui se r�sume en une phrase simple: Les DLLs et la STL ne font pas bon m�nage. Tu peux essayer une recherche de "C4251" sur MSDN pour esp�rer trouver une solution...
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    45
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 45
    Par d�faut
    Effectivement le:

    extern "C"

    ne sert � rien... mais �a marche aussi bien avec que sans. (je l'ai gard� d'un bout de code que j'ai �crit en C il y a bien longtemps, et je l'ai laiss� apr�s enrobage ++)

    Pour le string par contre, toujours pas d'autres suggestions...??


    merci

    bv

  4. #4
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Le Linker refuse obstin�ment avec le message d'erreur suivant:
    c:\mydocs\visual studio 2005\projects\nxl_cpp\nxl_dll\nxl_dll.h(84) : warning C4251: 'CNXL_DLL::m_strNNName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CNXL_DLL'
    1> with
    Je pense que tu as mal lu....

    Normalement la DLL est tout � fait utilisable, tant que de part et d'autre on utilise la m�me STL...

Discussions similaires

  1. port�e d'une variable dans une fonction dans une m�thode
    Par laurentg2003 dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 29/06/2009, 19h05
  2. [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
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Conseil sur l'extraction d'une string dans une string
    Par Mickey.jet dans le forum Delphi
    R�ponses: 3
    Dernier message: 02/06/2006, 14h54

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