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++ -> C#] Erreur PInvokeStackImbalance


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Mars 2006
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 76
    Par d�faut [C++ -> C#] Erreur PInvokeStackImbalance
    Bonjour,

    Je suis en train de connecter mon programme fait sous C# avec quelques libraires DLLs �crites en C++.

    Tout de suite, j'obtiens sur l'�cran l'erreur suivante: "PInvokeStackImbalance" quand je veux faire allusion � cette fonction de ma DLL:

    short MaFonction (char* valueCharArray, long valueLong1, long valueLong2, short valueShort);

    en utilisant:

    [DllImport("MaDLL.dll", EntryPoint = "MaFonction")]
    unsafe public static extern short MaFonction(char[] valueCharArray, long valueLong1, long valueLong2, short valueShort);

    et

    valeur = MaFonction (valueCharArray, valueLong1, valueLong2, valueShort);

    Le message mentionne la signature PInvoke g�re� et la signature de destin pas sign�e.

    J'avais pens� � la "substitution" des pointeurs par des arrays comme la source du probl�me, mais j'ai d'autres byte* et short* avec lesquels j'ai jou� d'une fa�on similaire et je n'ai pas re�u des messages du syst�me.

    En plus, je me suis aper�u que je re�ois l'erreur seulement quand je suis avec la d�puration "Debug". Quand j'execute mon application hors le Visual Studio ou avec le "Release", tout marche bien!!

    Tous les probl�mes mentionn�s ont eu lieu sous le Visual Studio 2005. Je ne les ai pas test�s sous le Visual Studio 2003.

    Quelques id�es sur ce que je fais mal?

    Merci par avance.

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    j'aurai tendance � remplacer les pointeurs par des intprt, et de traiter ensuite avec le marshalling au besoin

  3. #3
    Membre confirm�
    Inscrit en
    Mars 2006
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 76
    Par d�faut
    Un exemple tr�s simple en deux lignes de code, ou une r�ference dans l'Internet pour commencer la recherche de ce que vous disez seraient-ils possibles? Merci.

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414

  5. #5
    Membre confirm�
    Inscrit en
    Mars 2006
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 76
    Par d�faut
    Merci beaucoup de votre aide, je crois que avec les exemples de ce lien, un peu d'effort et un peu de temps, je serai capable d'effacer ce message d'erreur qui para�t partout.

    De toute fa�on, avez-vous connaissance que le probl�me avec le PStackImbalance se soit produit seulement dans l'environnement VS2005 ou peut-il se passer lors du d�veloppement avec le VS2003 aussi?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    55
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 55
    Par d�faut
    Citation Envoy� par Iv�n Y.
    Bonjour,
    "PInvokeStackImbalance"
    Attention aussi � la taille des types entiers entre .NET et natif. ( long = 64bits en .NET)

  7. #7
    Membre confirm�
    Inscrit en
    Mars 2006
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 76
    Par d�faut
    Merci.

    �a peut supposer la solution a tous les probl�mes. Je ne m'en 'etais pas aper�u. Je pensais plut�t aux pointeurs.

    Mais un r�sultat qui me semble encore totallement �tonnant est celui de ne montrer l'erreur que sous le mode "Debug", car l'executable (une fois sorti de l'EDI VS2005) n'a rien de bizarre et peut fonctionner sans probl�mes. Quelle serait la raison de tout �a?

  8. #8
    Membre confirm�
    Inscrit en
    Mars 2006
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 76
    Par d�faut
    Curieusement, la diff�rence de taille des long en C# et C++, c'�tait la cl�. Merci jobigoud!!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 30/05/2015, 16h04
  2. Erreur pInvokestackImbalance sur SendMessage
    Par neojeff dans le forum VB.NET
    R�ponses: 5
    Dernier message: 24/10/2013, 14h25
  3. R�ponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    R�ponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    R�ponses: 1
    Dernier message: 22/03/2002, 09h41

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