Передача функции обратного вызова C # через Interop / pinvoke

Я пишу приложение на C #, которое использует службы Interop для доступа к функциям в собственной C ++ DLL. Я уже использую около 10 различных функций, которые работают.

Теперь я не уверен, как обработать передачу обратного вызова в качестве параметра, чтобы DLL могла вызывать мой код.

Вот прототип функции DLL:

typedef void (WINAPI * lpfnFunc)(const char *arg1, const char *arg2)

И функция, которая позволяет мне передать вышеуказанный тип:

int WINAPI SetFunc(lpfnFunc f)

Вот мой код C # для определений делегата и функции:

public delegate void Func(string arg1, string arg2);

public static void MyFunc(string arg1, string arg2)

Вот мой код C # для функции SetFunc Interop:

[DllImport("lib.dll", CharSet = CharSet.Ansi)]
public static extern int SetFunc(Func lpfn);

И, наконец, вот код, где я вызываю функцию SetFunc и передаю ей мой обратный вызов:

SetFunc(new Func(MyFunc));

К сожалению, моя функция не вызывается, когда она должна быть. Возвращаемое значение функции SetFunc возвращает код ошибки для Success, поэтому либо он не вызывает мою функцию, либо он не работает, потому что мой код неверен.

Ответы на вопрос(2)

Ваш ответ на вопрос