Мне нужно реализовать небольшую часть логики моего приложения в нативном коде.
Чтобы протестировать возможности PInvoke, я создал простое решение с неуправляемым C32 Win32 Dll и проектом WPF, который использует функции dll с использованием PInvoke.
Проблема, с которой я сталкиваюсь, состоит в том, что я получаю исключение о "несбалансированности стека" и "возможном несоответствии сигнатур"
Вот мой код:
1) C ++ (dll)
#include <stdio.h>
#include <Windows.h>
extern "C"
{
__declspec(dllexport) int add(int a, int b)
{
return a+b;
}
}
2) C #:
public partial class MainWindow : Window
{
[DllImport("MyLibrary.dll")]
static extern int add(int a, int b);
public MainWindow()
{
InitializeComponent();
}
private void btnVersion_Click(object sender, RoutedEventArgs e)
{
var res = add(3,2);
}
}
Код выдает исключение, заявляющее: « Вероятно, это связано с тем, что управляемая подпись PInvoke не соответствует неуправляемой целевой подписи. Убедитесь, что соглашение о вызовах и параметры подписи PInvoke соответствуют целевой неуправляемой подписи. »
Где моя ошибка?