想在MFC中使用一个C#写的DLL的接口,接口参数为一个委托,求解决办法,谢谢~
接口定义为:
void SetDrawEvent(DrawEvent drawEvent)
其中参数定义为:
delegate void DrawEvent(object sender, DrawEventArgs args); //DrawEventArgs 继承于 EventArgs。
尝试使用下面的方法:
首先定义一个函数:
void CDLLDebugProjDlg::DrawBitmap(gcroot<System::Object ^> sender ,MyNameSpace::DrawEventArgs args)
{
//TODO
}
然后:
gcroot<MyNameSpace::DrawEvent ^> m_DrawEvent;
m_DrawEvent = new gcroot<MyNameSpace::DrawEvent ^>(DrawBitmap);
再把new 出的m_DrawEvent当参数进行调用:
SetDrawEvent(m_DrawEvent);
结果,编译时,在new 的地方报错:
error C2664: “gcroot<T>::gcroot(T)”: 不能将参数 1 从“void (__clrcall *)(gcroot<T>,MyNameSpace::DrawEventArgs)”转换为“MyNameSpace::DrawEvent ^”
1> with
1> [
1> T=MyNameSpace::DrawEvent ^
1> ]
1> and
1> [
1> T=System::Object ^
1> ]
1> 没有用户定义的转换运算符,或者
1> 没有使该转换得以执行的上下文
1>
1>生成失败。
本人对C# 和 C++/CLI 都只是初学。。。有指点还望细说,谢谢