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++/CLI Discussion :

[C#/DllImport] Comment appeler fonction de type char* ?


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut [C#/DllImport] Comment appeler fonction de type char* ?
    Salut,

    Je dois appeler depuis mon application C# une fonction située dans une dll, voici le prototype de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const char* ma_fonction(long number);
    J'ai fait un DllImport comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [DllImport("\\dll\\madll.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern StringBuilder ma_fonction
    (
         long number
    );
    Et voici mon appel de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StringBuilder error_string = new StringBuilder(1024);
    error_string = ma_fonction(error_number);
    Mais à l'exécution j'ai une erreur m'indiquant que j'ai déséquilibré la pile.

    Qu'est ce qui ne va pas ? Auriez-vous des exemples similaires à me proposer ?

    Merci.

    ++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut
    J'ai trouvé d'où venait le problème et ça ne vient pas du StringBuilder.

    En fait ma Dll est écrite en C et attend un long int. Sauf qu'un long int en C est codé sur 32 bits (sur x86) et un long en C# est codé sur 64 bits.

    Donc forcément je faisais des bêtises sur la pile...

    ++

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2015, 17h33
  2. Comment appeler fonction MATLAB 7.8 à partir de C# ?
    Par younesgates dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/02/2010, 08h46
  3. [COM] Definir un parametre de fonction de type char
    Par kacedda dans le forum Visual C++
    Réponses: 13
    Dernier message: 16/04/2008, 13h10
  4. Réponses: 3
    Dernier message: 19/03/2008, 22h11
  5. Comment appeller un ActiveX de type Exe en JAVASCRIPT ?
    Par mandarindi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/03/2005, 09h57

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