Я создаю очень простой пример PInvoke:
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);
Но всякий раз, когда я вызываю вышеуказанный метод NativeMethods.Add
, я получаю следующий управляемый помощник по отладке:
обнаружен PInvokeStackImbalance Сообщение: вызов функции PInvoke "CommonManagedLib! CommonManagedLib.NativeMethods:: Add" не сбалансировал стек. Вероятно, это связано с тем, что управляемая подпись PInvoke не соответствует неуправляемой целевой сигнатуре. Убедитесь, что соглашение о вызове и параметры сигнатуры PInvoke соответствуют целевой неуправляемой сигнатуре.
Затем вызов завершается с ожидаемым значением возвращаемого значения, но появление сообщения MDA является раздражающим и тревожным - я пока не понимаю PInvoke, но из того, что я прочитал, я уверен, что моя подпись правильно - что я делаю неправильно?
Все это на 32-разрядной ОС.