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 :

Passage de String à une DLL


Sujet :

C++

  1. #1
    tsp
    tsp est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Points : 54
    Points
    54
    Par défaut [Résolu] Passage de String à une DLL
    Bonjour,

    J'ai un probleme à vous faire part en esperant que quelqu'un pourra m'aider. Bon alors je vais tenter d'etre clair, j'ai fais une DLL en C++ avec une fonction dont la signature (ou le prototype je ne sais plus) est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __stdcall Requery(char* Param[32], char* ReqSql[32]);
    les parametres Param et ReqSql sont des paramètres entrants.

    Cette fonction est appelée depuis un programme PowerBuilder. Je declare donc ma fonction dans mon programme PowerBuilder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Subroutine Requery(String Param, String ReqSql) Library "D:\Stage\C++ MFC ODBC\DLL ODBC\Debug\DLL ODBC.dll"
    et je l'appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // lit le texte dans une zone de texte sle_param et rajoute le nombre d'espace necessaire pour arriver à la meme taille que la chaine de caractere declaré dans // la fonction C++
    param = sle_param.text + Space(32 - Len(sle_param.text))
    // lit le texte dans une zone de texte mle_req
    req = mle_req.text + Space(32 - Len(mle_req.text))
    Requery(param,req)
    Donc le soucis que j'ai, c'est que je n'arrive pas à passer le texte de PowerBuilder à C++, le texte que je ressorts dans ma fonction C++ et soit rien soit "ÿ". Si quelqu'un à la démarche dans un autre langage ou programme que PowerBuilder je suis aussi preneur, je verrais si je peux la porter sous PB.

    Merci d'avance.

  2. #2
    tsp
    tsp est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Points : 54
    Points
    54
    Par défaut
    Apres de nombreuses tentatives et recherches, je suis enfin arrivé a mes fins. Je vais donc en donner les conclusions au cas ou ça interesse quelqu'un.
    Donc il s'avère que dans PowerBuiler 10 (les autres avant je ne sais pas), les caracteres des String sont codés sur 16bits, c'est donc de l'UNICODE. Par conséquent, il faut dire à C++ que c'est une chaine de caractere UNICODE, donc LPWSTR (= wchar*). Ma fonction C++ devient donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __stdcall Requery(LPWSTR Param, LPWSTR ReqSql);
    La declaration de ma fonction sous PB ne change pas, et pour appeler ma fonction il suffit de passer de simple chaine string comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // lit le texte dans une zone de texte sle_param
    String param = sle_param.text
    // lit le texte dans une zone de texte mle_req
    String req = mle_req.text
    Requery(param,req)
    En résumé le problème venait juste d'une non concordance des types de codage des caractères d'un programme à l'autre.

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

Discussions similaires

  1. Problème de passage de string entre DLL
    Par oodini dans le forum C++
    Réponses: 4
    Dernier message: 24/03/2009, 16h34
  2. passage de paramètres à une dll c++
    Par free-lance dans le forum C#
    Réponses: 1
    Dernier message: 01/08/2008, 15h35
  3. Réponses: 1
    Dernier message: 16/03/2007, 15h28
  4. Réponses: 5
    Dernier message: 01/03/2007, 17h19
  5. 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

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