Я создаю очень простой пример 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-битной ОС.