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 :

DLL C, char* et C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut DLL C, char* et C#
    Bonjour à tous,

    Je voudrais utilser une DLL écrite en C dont un des paramétre est un char*.

    Seulement, ce paramétre char* doit me renvoyer BONjour
    Et il me renvoie BNor (il me prends 1 lettre sur 2 ??)

    Si quelqu'un a une idée, il est le bienvenue...
    D'avance merci


    Je fais ça (désolé pour les "fioritures) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    unsafe class Program
        {
     
            [DllImport("LST.DLL")]
            public static extern void VA_Main(short* a,long* b,char* c);
     
            public static void getALPHA() {
                short aNM=0;
                long bNM = 0;
                short* a = &aNM;
                long* b = &bNM;
                char* c = stackalloc char[100];
     
                string str = null;            
     
                VA_Main(a,b,c);
     
     
                byte[] cArray = new byte[100];
                for (int i=0;i<100;++i) {
                    Console.WriteLine(" = " + (byte)c[i]);
                    cArray[i] = (byte)c[i];
                }
     
     
     
                str = Encoding.GetEncoding("ISO-8859-1").GetString(cArray);
                //str = new string(c);
     
                //
     
     
     
     
                Console.WriteLine("N2:{0} N4:{1} B:{2}", aNM, bNM, str);
            }

  2. #2
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Perte d'une lettre sur deux? Ca ressemble à de la conversion Unicode (chaque caractère est codé sur 2 bytes). A explorer...

  3. #3
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    Ben... je passe finalement par la classe StringBuilder au lieu du char* et maintenant ça passe.
    Je sais pas pourquoi, je sais pas comment, mais ça fonctionne

    merci

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

Discussions similaires

  1. Méthode DLL + argument char* en Java
    Par fares.gl dans le forum Général Java
    Réponses: 1
    Dernier message: 19/09/2011, 10h30
  2. [WD12] récupération d'un Char* d'une dll
    Par CTotophe85 dans le forum WinDev
    Réponses: 11
    Dernier message: 08/10/2008, 09h27
  3. Dll et paramètre char *
    Par dd16 dans le forum C++
    Réponses: 1
    Dernier message: 08/02/2007, 12h34
  4. Equivalent Char* du C++ pour dll
    Par oceane dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2005, 12h22
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

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