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 :

Pile PInvoke et dll


Sujet :

C++/CLI

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 49
    Points : 155
    Points
    155
    Par défaut Pile PInvoke et dll
    Bonjuour,

    J'ai une dll (code non managée) que j'ai crée dans laquelle j'ai une fonction qui est déclarée de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    extern "C"
    {
         __declspec(dllexport) int SetValue ( int iValue ); 
    }
    Puis, dans mon application Winform en c++, j'ai un fichier dans lequel je l'importe de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [DllImport("test.dll")] 
    int SetValue ( int iValue );
    Malheureusement, lors de l'exécution l'appel de la fonction SetValue depuis l'application qui charge la dll provoque une erreur sur PInvoke disant que ma fonction a dédéquilibré ma pile et fournissant l'explication suivante:
    Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.

    Je dois avouer que malgré mes recherches, je ne comprends pas ce qui se passe ni quoi faire pour corriger. Quelqu'un pourrait-il m'aider?

    Merci!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Moi, je me ne compliquerai pas la vie.
    Vous êtes en C++/CLI est vous avez le fichier .h public de la dll et le .lib associé ?
    Donc, appelez cette fonction comme une fonction de Dll en C++ standard, un simple include du .h et l'ajout de la lib aux paramètres du linker fera l'affaire.

Discussions similaires

  1. Pinvoke dll WIndows Service
    Par pradier4 dans le forum Services Windows
    Réponses: 2
    Dernier message: 07/04/2013, 21h13
  2. Can't Find PInvoke DLL "Dbnetlib.Dll"
    Par ghir_ana dans le forum VB.NET
    Réponses: 5
    Dernier message: 17/10/2011, 18h36
  3. Réponses: 10
    Dernier message: 14/06/2011, 15h01
  4. "DLL PInvoke 'sqlceme35.dll' introuvable."
    Par 4systemation dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 06/04/2011, 23h54
  5. [WIN32][D7][DLL] Erreur: débordement de pile !
    Par hepha1970 dans le forum Débuter
    Réponses: 5
    Dernier message: 17/12/2007, 01h41

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