小弟有一DLL是用VC写的
原型如下:HRESULT __cdecl SetCallBack( 
HANDLE hHandle, 
void *pFunction, 
void *pFirstParameter, 
WORD wID,  
WORD wStream  
)下面是我在C#中定义的该DLL函数,不知道对不对[DllImport("MYDLL.dll", EntryPoint="SetCallBack")]
public static extern int SetCallBack(IntPtr hHandle, void * pFunction, void * pFirstParameter, short sID, short sStream);编译是通过了,但是不知道如何定义回调函数和调用这个API
其中第二和第三个参数需要到一个回调函数和该回调函数所在的类的指针
那么在C#中如何我应该如何定义这个回调函数呢?
然后参数该怎么写?
我是今天才接触C#的,因为要赶工程,请大家帮帮忙哦,谢谢了

解决方案 »

  1.   

    在C++中调用如下:SetCallBack( m_Handl, CResult::OnImageProxy, pResult, 0, 0 )其中各个参数类型为:HANDLE m_Handl;
    CResult *pResult;
    int CHvResult::OnBigImageProxy(void *pFirstParameter);
      

  2.   

    回调的话,先的声明委托void * pFunction, void * pFirstParameter不知道这两个函数的 原型申明是啥,所以无法帮你完成这个委托请把这两个函数 原型贴出来先
      

  3.   

    谢谢楼上的朋友们
    对于void * pFunction 和 void * pFirstParameter
    在C++中是取回调函数的地址作为pFunction参数
    然后取该回调函数所在的类对象的地址作为pFirstParameter参数
    因此C++中的参数类型都是void *
    由于刚接触C#,所以不知道如何将C#中的函数地址作为参数传进去