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 :

Problème de passage de string entre DLL


Sujet :

C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut Problème de passage de string entre DLL
    Hello,

    J'ai mon programme principal qui appelle une fonction située dans une DLL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bool dllClass::register(mainProgClass& MainInstance)
    {
        return MainInstance.register("pouet1", "pouet2");
    }
    Celle-ci appelle donc à son tour une fonction qui se trouve dans le programme principal, en lui passant deux paramètres string. La fonction du programme principal est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mainProgClass::register(std::string arg1, std::string arg2) {...}
    Quand, dans le programme principal, je débogue dans cette fonction, la 1ère chaîne est corrompue : J'ai devant ma chaîne 3 caractères abscons. Quant au second, je en reçois rien du tout (pointeur invalide).

    Une idée ?

    Merci.

  2. #2
    Membre expérimenté

    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
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Il ne faut pas passer de std::string mais des char*, plus de détails par ex dans C++, the real world, and link and binary compatibility.

    MAT.

  3. #3
    screetch
    Invité(e)
    Par défaut
    si tu tiens a passer des std::string il faut t'assurer de la compatibilité binaire parfaite, c'est a dire que les deux programmes sont compilés avec EXACTEMENT les mêmes flags de compilation

  4. #4
    Membre expérimenté

    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
    Points : 1 543
    Points
    1 543
    Par défaut
    Et les mêmes versions de compilateurs, la blague classique étant que de vc80 à vc80sp1 la CRT a subrepticement changé...

    MAT.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Effectivement, maintenant que j'ai remplacé mes std::string par des char*, ça fonctionne mieux !

    Mais pour tout dire, j'ai un 3ème argument, que je n'avais pas mentionné car il apparaissait normal à la "réception". Mais comme j'ai toujours un plantage, et du fait de la lecture de l'article, je le suspecte également.

    Ce 3ème argument est un objet. Je ne peux pas faire autrement que de passer un objet (il y a une fabrique, dans l'histoire). Ou alors... Je crée un objet sur le tas et je renvoie un pointeur.

    Que faire ? La seule solution est de s'assurer d'une adéquation complète entre les compilateurs et options de compilation ?

Discussions similaires

  1. [résolut] Problème de passage de valeur entre Windows Form
    Par tribaleur dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2007, 11h29
  2. Réponses: 1
    Dernier message: 16/03/2007, 15h28
  3. Réponses: 5
    Dernier message: 01/03/2007, 17h19
  4. Probleme de passage de string entre DLL win32 et projetC#?
    Par Jayceblaster dans le forum C++/CLI
    Réponses: 15
    Dernier message: 17/11/2006, 13h10
  5. Passage de String à une DLL
    Par tsp dans le forum C++
    Réponses: 1
    Dernier message: 09/03/2006, 16h53

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