第一次用C#,现在用C#写一个界面,C++做了一个COM对象。现在打算C++的COM对象在执行过程中需要向C#界面push信息,故打算采用托管的方式实现。因此可以分为以下步骤:
1. C#将托管的函数传递给C++对象;如定义delegate GetMsg(string),传递时:comobj.InitCallBack(new GetMsg(func))
2. C++ COM对象将信息不断PUSH过来,即调用该函数pFunc(string);
但现在遇到了一个问题:C++中定义函数指针很容易,传递的函数指针的时候可以用void*  或是long* 只需要类型转换就行了。但C++定义COM接口InitCallBack()是参数怎么定?定成long型的话C#如何将函数参数赋值?初用C#,问题指不定就有错误,还望不吝赐教!!

解决方案 »

  1.   

    就是C++接口参数类型该怎么定义,C#那边该怎么传递函数指针(C#中应该没这个名词)~
      

  2.   

    Marshal.GetFunctionPointerForDelegate
    以IntPtr传递
      

  3.   

    大神,再详细点啊,没用过不会写:
    public delegate void GetMessage(string strMsg);GetMessage myFunc= new GetMessage(AddString);
    IntPtr  pFunc = Marshal.GetFunctionPointerForDelegate(myFunc);
    comOjb.InitCallBack( ref pFunc);是这种写法吗?
    那C++那边定义什么类型的参数来对应IntPtr