【发布时间】:2011-12-14 02:24:28
【问题描述】:
我用 C++ 创建了 COM 服务器,用于 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"
看来我使用了错误的方法,有没有一种快速的方法可以在 C++ 中将函数指针声明为 COM 对象方法的参数,然后在 C# 中使用它?
【问题讨论】: