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:
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
4
5 extern "C" { __declspec(dllexport) 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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [DllImport("test.dll")] int SetValue ( int iValue );
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!
Partager