Я создал COM-сервер на C ++, который используется из приложения C #.Теперь мне нужно добавить еще один метод в мой COM-объект, и одним из его параметров должен быть указатель на функцию обратного вызова.Исходная функция C ++ выглядит так:
typedef int (__stdcall *tCallBackFunc)(int Param);
void MyFunc(void* CallBackFunc)
{
int Param;
//some code
((tCallBackFunc)(CallBackFunc))(Param); //call callback function
}
Мне нужно добавить MyFunc как метод COM-объекта.Диалоговое окно «Добавить метод» VS VC ++ предлагает некоторые предопределенные типы для параметра метода COM, такие как «int *» или «bstr», я пытался определить параметр «CallBackFunc» как тип «int *», но я не смог заставить его работать вC #:
public delegate int tCallBackFunc(int Param);
...
tCallBackFunc cb; //I will initialize it when it is compiled
MyCOMObject.MyFunc(cb); //cannot find any way to cast cb to "ref int"
Кажется, я использую неправильный подход, есть ли быстрый способ объявить указатель на функцию в качестве параметра метода COM-объекта в C ++, а затем использовать его в C #?