111,126
社区成员
发帖
与我相关
我的任务
分享
typedef void (__stdcall *delegate_GetPtr)(const void*);
typedef void (__stdcall *delegate_OnRequest)(const char* info);
typedef void (__stdcall *delegate_OnCancel)();
typedef void (__stdcall *delegate_OnError)();
typedef void (__stdcall *delegate_OnComplete)();
typedef void (__stdcall *delegate_OnProgress)(int percent);
void __stdcall SetEvents
(
delegate_GetPtr ptr,
delegate_OnRequest req,
delegate_OnCancel can,
delegate_OnError err,
delegate_OnComplete cmpl,
delegate_OnProgress prg
)
{
//这里实现内容省略
}
delegate void delegate_GetWrapperPtr(IntPtr ptr);
delegate void delegate_OnRequest(string Info);
/// <summary>
/// 无参函数指针
/// </summary>
delegate void delegate_NoParamFuncPtr();
delegate void delegate_OnProgress(int percent);
//下面是调用SetEvents,注意和上面C++原型的对比
[DllImport(_dll_path_,
CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall,
EntryPoint = "SetEvents")]
private static extern void SetEvents(
[MarshalAs(UnmanagedType.FunctionPtr)]
delegate_GetWrapperPtr ptr,
[MarshalAs(UnmanagedType.FunctionPtr)]
delegate_OnRequest req,
[MarshalAs(UnmanagedType.FunctionPtr)]
delegate_NoParamFuncPtr can,
[MarshalAs(UnmanagedType.FunctionPtr)]
delegate_NoParamFuncPtr err,
[MarshalAs(UnmanagedType.FunctionPtr)]
delegate_NoParamFuncPtr cmp,
[MarshalAs(UnmanagedType.FunctionPtr)]
delegate_OnProgress prg
);