我在C ++中创建了用于C#应用程序的COM服务器。现在我必须向我的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"
似乎我使用了错误的方法,有没有一种快速的方法在C ++中将函数指针声明为COM对象方法的参数然后在C#中使用它?
答案 0 :(得分:7)
COM方式是使参数成为接口指针,并让接口声明回调函数。
答案 1 :(得分:1)
为Frederik的答案+1。
<迈克尔:迈克尔:这比你想象的解决方案要容易得多。 特别是