c++代码:
//定义回调函数
typedef void(pConnEventCallback)(const char pKhh, const char* pConnKey, int nEvent, void* pData);
//被调用函数,在ITPAPI类中声明实现
void ITPTradeAdpater::ITPAPI::ITPAPI_SetConnEventCallback(pConnEventCallback func)
{
MARITPDK_SetConnEventCallback(func);
}
C#代码
unsafe public delegate void conev(char* pKhh, char* pConnKey, int nEvent, void* pData);
unsafe static void Main(string[] args)
{
ITPTradeAdpater.ITPAPI tPAPI = new ITPTradeAdpater.ITPAPI();
tPAPI.ITPAPI_SetConnEventCallback(&ConnEvent2);//此处报错,不知道该怎么写
}
public unsafe static void ConnEvent2(char* pKhh, char* pConnKey, int nEvent, void* pData) {
Console.WriteLine("nEvent:{0}",nEvent);
}
C#调用ITPAPI_SetConnEventCallback 并传递函数指针参数,然后c++回调ConnEvent2;问题是怎么把ConnEvent2当做函数指针传递给ITPAPI_SetConnEventCallback ?
目前C#调用ITPAPI_SetConnEventCallback函数 需要传递一个函数指针,不知道C#该怎么声明函数指针并传递调用。
这个功能是c++回调C#, 用来做通知。没搞过CLR,请各位指教!
GCHandle.Alloc
GCHandle.ToIntPtr
可以google起来了.
搜索了一下,没搞懂该怎么写,希望给指点一下,感谢
@zeran:
面向 stackoverflow 编程:
https://stackoverflow.com/questions/10841081/c-sharp-c-interop-callback