使用clr包装c++的sdk来让c#使用,sdk里的回调是函数指针,想通过clr包装,c#用委托// core.h
namespace Core {
public ref class Live
{
public:
delegate void SucDelegateCallBack(void* data);
void init(SucDelegateCallBack^ suc);
};
}
// core.cpp
namespace Core {
void Live::init(SucDelegateCallBack^ suc) {
// sdk的头文件相关内容:
// typedef void (*SucCallback)(void* data);
// virtual void init(SucCallback suc = NULL) = 0; // 想实现下面的想法,但是不知道如何将suc转成SucCallback
GetCore()->init(SucDelegateCallBack); //这里是错误的:参数类型不对
}
}
如何将SucDelegateCallBack转化成SucCallback呢?
namespace Core {
public ref class Live
{
public:
delegate void SucDelegateCallBack(void* data);
void init(SucDelegateCallBack^ suc);
};
}
// core.cpp
namespace Core {
void Live::init(SucDelegateCallBack^ suc) {
// sdk的头文件相关内容:
// typedef void (*SucCallback)(void* data);
// virtual void init(SucCallback suc = NULL) = 0; // 想实现下面的想法,但是不知道如何将suc转成SucCallback
GetCore()->init(SucDelegateCallBack); //这里是错误的:参数类型不对
}
}
如何将SucDelegateCallBack转化成SucCallback呢?
SucCallback cb = static_cast<SucCallback>(ip.ToPointer());