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 :

Argument String in DLL


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut Argument String in DLL
    Bonjour à tous
    ça fait 2 jours que je tourne en rond, je cherche à passer un string à une fonction d'une DLL appelée depuis du VB d'excel. en vb ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function LoadAndSortRequestData_dll Lib "Mydll.dll" (ByVal aTestString As String, ByVal aFileRequests As String) as long
    et en C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int __stdcall LoadAndSortRequestData_dll(BSTR ateststring, char* aRequestsFile)
    {
    //....fonction de lecture de données
    return 0;
    }
    Je lis partout que le BSTR est le type approprié pour récupérer un string venant du VB, mais seul le type char* récupère correctement le string vb, le BSTR m'affiche une liste interminable de symbole chinois .
    J'ai obsolumement besoin de pouvoir passer un BSTR pour gérer après des SAFEARRAY de caractères...
    Quelqu'un a t il une idée ?
    Merci

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Le type BSTR, c'est plutôt pour des dll COM.

    Je dirais que si le type char* va bien, ne pas s'en priver.

    Par contre je ferais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    int __stdcall LoadAndSortRequestData_dll(char* ateststring, int SizeTestString, char* aRequestsFile, int SizeRequestString)
    {
    //....fonction de lecture de données
    return 0;
    }
    Cela permettra à la dll d'éviter de faire des bêtises avec la mémoire.

    S'il faut utiliser absolument le BSTR, faire attention que c'est du Wide Char :

    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Sinon faire un essaie avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int __stdcall LoadAndSortRequestData_dll(wchar_t* ateststring, char* aRequestsFile)
    {
    //....fonction de lecture de données
    return 0;
    }

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

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut
    Merci beaucoup pour la réponse, mais une variable wchart_t* ne me récupère pas plus la variable venant du VB.
    Sinon j'aurai très volontier continuer à gérer des char*, mais je voudrais pouvoir passer des gros vecteurs de string et je n'ai trouvé aucun moyen de le faire avec des char* ce qui de toute façon me parait dangereux pour la gestion de la mémoire comme tu dis.

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Bonjour,

    Un char* (pointeur de type char)
    et un string (objet contenant un char* et d'autres trucs)

    C'est pas trop la même chose.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut
    Oui je sais, mais ça ne résoud pas mon problème. Comment je peux récupérer un BSTR ou un wchart* (en gros quelque chose te propre avec une taille, pas juste un pointeur) dans les argument de ma dll en tant que "chaine de caractères" pour être en mesure de gérer des arguments de vecteur de chaines de caractères.
    Merci

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Citation Envoyé par marcus7 Voir le message
    un BSTR ou un wchart* (en gros quelque chose te propre avec une taille, pas juste un pointeur)
    Merci
    à mon avis un wcahrt* c'est juste un pointeur, justement...
    tes informations sur la signature de VB ne seraient-elles pas obsolètes ou inadaptées à la version? Ça s'est vu...

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

Discussions similaires

  1. [LabVIEW 8.2] Trouver les bons types d'argument d'une dll
    Par fabrice_91 dans le forum LabVIEW
    Réponses: 16
    Dernier message: 03/02/2009, 17h27
  2. Réponses: 1
    Dernier message: 16/03/2007, 15h28
  3. 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
  4. string dans dll c++
    Par tunidev dans le forum C++
    Réponses: 3
    Dernier message: 09/05/2006, 16h28
  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