Pourquoi suis-je “PInvokeStackImbalance a été détecté” pour cet exemple simple?

Je suis de la création d'un très simple PInvoke exemple:

extern "C" __declspec(dllexport) int Add(int a, int b)
{
    return a + b;
}

[DllImport("CommonNativeLib.dll")]
extern public static int Add(int a, int b);

return NativeMethods.Add(a, b);

Mais à chaque fois que j'appelle le ci-dessus NativeMethods.Add méthode j'ai le géré debug adjoint:

PInvokeStackImbalance a été détecté
Message: Un appel à PInvoke fonction " CommonManagedLib!CommonManagedLib.NativeMethods::Ajouter' a déséquilibré la pile. C'est probablement parce que la gestion de PInvoke la signature ne correspond pas à la non géré cible signature. Vérifiez que la convention d'appel et les paramètres de la PInvoke signature correspondre à la cible non géré signature.

L'appel, puis se termine avec la valeur de retour attendue, mais ayant la MDA message apparaît-il est à la fois gênant et inquiétant - je ne comprends pas tout PInvoke encore, mais de ce que j'ai lu, je suis sûr que ma signature est correcte - ce que je fais mal?

C'est tous sur un 32-bit OS.

InformationsquelleAutor Justin | 2011-04-09