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!