C# 写的COM组件,C++调用时如何传入函数指针
C# 写的COM组件,C++调用时怎么传入函数指针
各位好,请教一个问题。
C# 写的COM组件,C++调用时怎么传入函数指针。
C++ .tli文件里的定义
C# 里面 _COMStreamHandler 定义是一个委托
我在C++ 写了静态函数
请问在调用Play时该怎么调用呢?
------解决思路----------------------
函数指针c#中也不好直接处理,还是传递其他数据类型吧
各位好,请教一个问题。
C# 写的COM组件,C++调用时怎么传入函数指针。
C++ .tli文件里的定义
//
// interface IRealPlayer wrapper method implementations
//
inline VARIANT_BOOL IRealPlayer::Play ( _bstr_t camId, enum StreamTypez streamType, VARIANT_BOOL onSound, struct _COMStreamHandler * streamCallBack, const _variant_t & state ) {
VARIANT_BOOL _result = 0;
HRESULT _hr = raw_Play(camId, streamType, onSound, streamCallBack, state, &_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _result;
}
C# 里面 _COMStreamHandler 定义是一个委托
public delegate void COMStreamHandler(long timestamp, StreamDataTypez type, byte[] data, object state);
我在C++ 写了静态函数
static void StreamHandler(LONG timestamp, SSNetSdk_COM::StreamTypez type, VOID * data, _variant_t state)
请问在调用Play时该怎么调用呢?
//以下代码 StreamHandler 类型形参不兼容
im_realPlayEx->Play(ChannelId, SSNetSdk_COM::StreamTypez_Main, VARIANT_FALSE, StreamHandler, user);
------解决思路----------------------
函数指针c#中也不好直接处理,还是传递其他数据类型吧