如何在C#windows应用程序中使用C++类?

Kap*_*pil 5 c#

我正在尝试在我的c#windows应用程序中使用c ++类方法

我用这个

[DllImport("ZKNetLib.dll", EntryPoint = "ZK_NET_DEV_SetEventCallBack")]
public static extern int ZK_NET_DEV_SetEventCallBack(int u32Handle, ref OnEventCallBack u32Event, IntPtr pUserData);
Run Code Online (Sandbox Code Playgroud)

导入dll及其方法

但是,在dll方法中还有一些其他方法也被使用,我发现很难找出到底发生了什么.就像在上面导入的那样,dll正在使用"OnEventCallBack"方法.那么,有没有办法在我的Windows应用程序中使用这些c ++类和头文件.

我,通过制作类对象并使用那个命名空间,听说在c ++中使用c#应用程序类.

所以,我想知道应该有任何方法将这些头文件和类用于我的c#应用程序吗?

以下是编辑过的问题

ZK_NET_DEV_SetDataCallBack此函数用于信息数据回调.HI_S32 ZK_NET_DEV_SetDataCallBack(HI_U32 u32Handle HI_ON_DATA_CALLBACK cbDataCallBack,HI_VOID*pUserData);

参数u32Handle [IN]操作句柄cbDataCallBack [IN]信息数据回调函数pUserData [IN]用户数据

回调函数typedef HI_S32(*HI_ON_DATA_CALLBACK)(HI_U32 u32Handle,HI_U32 u32DataType,HI_U8*pu8Buffer,HI_U32 u32Length,HI_VOID*pUserData);

回调函数参数u32Handle操作句柄u32DataType数据类型宏定义值含义ZK_NET_DEV_MOTION_DETECTION 0运动检测报警ZK_NET_DEV_INPUT_ALARM 1输入报警ZK_NET_DEV_KEEP_ALIVE 2心跳包pu8Buffer数据.如果u32DataType的值是ZK_NET_DEV_MOTION_DETECTION,则pu8Buffer存储为HI_S_ALARM_MD.typedef struct {HI_U32 u32Area; //区域HI_U32 u32X; // x坐标HI_U32 u32Y; // y坐标HI_U32 u32Width; //矩形宽度HI_U32 u32Height; //矩形高度} HI_S_ALARM_MD; u32Area的最大值为4.相关数据如下:宏定义值含义ZK_NET_DEV_MOTION_AREA_1 1区域1 ZK_NET_DEV_MOTION_AREA_2 2区域2 ZK_NET_DEV_MOTION_AREA_3 3区域3 ZK_NET_DEV_MOTION_AREA_4 4区域4 u32Length数据长度.如果u32DataType的值为ZK_NET_DEV_MOTION_DETECTION并且在两个区域中生成警报,则u32Length的值为:u32Length = 2*sizeof(HI_S_ALARM_MD)u32DataType用户数据

返回值HI_SUCCESS返回成功操作,HI_ FAILURE返回失败操作.

Lex*_* Li 1

SWIG 是迄今为止您可以使用的最可靠的选项(Mono 人员推荐,因为它甚至支持 Xamarin.iOS 和 Xamarin.Android)

http://www.swig.org/

因为它已经被用在太多场景了(Java、C#等等)。

当然还有其他替代方案,例如 Mono 的 cxxi 等,但如果 SWIG 适合您,那么为什么要使用它们呢?