我用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
}
Run Code Online (Sandbox Code Playgroud)
我需要添加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"
Run Code Online (Sandbox Code Playgroud)
看来我使用了错误的方法,有没有一种快速的方法将函数指针声明为C++中COM对象方法的参数,然后在C#中使用它?
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |