调用C++DLL,回调不触发

BATTLERxANGE 2015-03-24 05:38:52
这是C++的定义:

typedef unsigned char HI_U8;
typedef unsigned char HI_UCHAR;
typedef unsigned short HI_U16;
typedef unsigned int HI_U32;
typedef unsigned long HI_ULONG;
typedef unsigned __int64 HI_U64;

typedef char HI_S8;
typedef short HI_S16;
typedef int HI_S32;
typedef long HI_LONG;
typedef long HI_HANDLE;
typedef __int64 HI_S64;

typedef char HI_CHAR;
typedef char* HI_PCHAR;

typedef float HI_FLOAT;
typedef double HI_DOUBLE;
typedef void HI_VOID;

typedef enum hiMD_TYPE_E
{
DATA_MOTION_DETECTION = 0,
DATA_INPUT_ALARM,
DATA_KEEP_ALIVE,
DATA_DEC_STATE,
DATA_ALADIO_ALARM,
DATA_BUTT
}MD_TYPE_E;

typedef LONG (HISDK_APICALL* OnMessageCallBack)(
HI_U32 u32Chn,
MD_TYPE_E eDataType,
HI_U8* pu8Buffer,
HI_U32 u32Length,
HI_VOID* pUserData);


HISDK_API HI_S32 HISDK_APICALL HI_SDK_SetMessageCallBack(HI_HANDLE lHandle, HI_U32 u32Chn, OnMessageCallBack CallBack, HI_VOID *pUserData);


我在C#中这样调用:

public enum MD_TYPE_E
{
DATA_MOTION_DETECTION = 0,
DATA_INPUT_ALARM,
DATA_KEEP_ALIVE,
DATA_DEC_STATE,
DATA_ALADIO_ALARM,
DATA_BUTT
}

public delegate int MessageCallBack(int chn, MD_TYPE_E type, IntPtr areas, int length, IntPtr userData);

[DllImport(@"HISDK.dll")]
public static extern int HI_SDK_SetMessageCallBack(IntPtr handle, int chn, MessageCallBack callback, IntPtr userData);

var result=HISDKInvoker.HI_SDK_SetMessageCallBack(_handle, _handle.ToInt32(), new MessageCallBack(MessageCallBack), this.Handle);//返回0,表示成功
public static int MessageCallBack(int chn, IPCAMERATest2.Core.HISDKInvoker.MD_TYPE_E type, IntPtr areas, int length, IntPtr userData)
{
return 0;
}



但是无论怎样,MessageCallBack回调都不触发,看了下提供的C++DEMO, 是可以触发的,不知道是不是c#中的类型不对还是我的写法有问题?
...全文
171 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
MessageCallBack 怎么会有两个? 改一下名字吧
Ptrtoptr 2015-03-25
  • 打赏
  • 举报
回复
嘿,我的电脑里怎么没有这个HISDK.dll,我从网上下载了hisdk.dll 放在[DllImport("D:\\My Documents\\HISDK.dll")] 但是运行后,还是报错, Additional information: 无法加载 DLL“D:\My Documents\HISDK.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 晕啊,想帮个忙.但是我道行太浅了,帮不上

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧