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 :

Appel fonction "C" en "C#" ("CALLBACK" + "Unicode")


Sujet :

C#

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 2
    Par défaut Appel fonction "C" en "C#" ("CALLBACK" + "Unicode")
    Bonjour à tous,

    J'ai rencontré un problème avec l'appel d'une fonction "C" dans "C#".

    La fonction "C" reçu en argument un pointeur de fonction "CALLBACK" implantée en "C#", et elle appelle cette dernière à son tour en lui passant un paramètre de type "chaîne de caractères" (type "string" côté "C#").

    Code "C" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef void (__stdcall *PRETURNUNICODESTRINGCALLBACK)(const wchar_t *lpszText);
     
    __declspec(dllexport)
    void ReturnUnicodeStringProc(PRETURNUNICODESTRINGCALLBACK pReturnStringCallback)
    {
     
    	pReturnStringCallback(L"Data");
     
    }
    Code "C#":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private delegate void DoSomethingCallbackProc(string lpszText);
     
    [DllImport("SampleDLL.dll", CharSet = CharSet.Unicode)]
    private static extern void ReturnUnicodeStringProc(DoSomethingCallbackProc proc);
     
    static void Main(string[] args)
    {
        ReturnUnicodeStringProc(new DoSomethingCallbackProc(DoSomethingCallback));
    }
     
    private static void DoSomethingCallback(string lpszText)
    {
        int i = 0;
    }
    Si la fonction "C" passe une chaîne de type "MBCS" à la fonction "CALLBACK" en "C#", tout fonctionne bien. Mais si c'est une chaîne "Unicode" qui est retournée, seul le premier caractère est correctement transcrit dans l'objet "string" de "C#".

    Je joins avec ce message un code exemple qui démontre ce problème.

    Je vous remercie par avance de votre aide
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. pro c appelle fonction connexion
    Par friends dans le forum Oracle
    Réponses: 3
    Dernier message: 10/05/2004, 17h07
  2. Appels fonctions DLL
    Par Micka91 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/02/2004, 17h32
  3. Appel fonction assembleur en C
    Par grandjouff dans le forum C
    Réponses: 6
    Dernier message: 07/12/2003, 20h43

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