首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C回调函数转换成C#该如何处理

2012-09-02 
C回调函数转换成C#C/C++ codetypedef bool(__stdcall * TDevicelist_Callback)(Device_set * aset) typed

C回调函数转换成C#

C/C++ code
typedef bool(__stdcall * TDevicelist_Callback)(Device_set * aset) ;typedef  struct tagDevice_set{  Int  id;  Char  _name[32];  Char   username[32];  Char   userpass[16];  Char   ip [16];  Uint   port;  Byte   channel_count;  Byte   start_channel;  Byte   device_type;}Device_set;


上述的回调函数如何转换成C#语言的

[解决办法]
把指针用C#中的IntPtr代替,重写
[解决办法]
public static extern int PXNVR_GetDeviceList(uint userid,IntPtr callback);
[解决办法]
应该和C++差不多,参考下这个链接。
http://wenku.baidu.com/view/9f2ef117a216147917112813.html?st=1
[解决办法]
C# code
        //类型定义        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]        internal struct Device_set        {            public int id;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string _name;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string username;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string userpass;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string ip;            public uint port;            public byte channel_count;            public byte start_channel;            public byte device_type;        }        internal delegate bool TDevicelist_Callback(ref Device_set ds);        //DLL导入        [DllImport("DLL名字", CallingConvention = CallingConvention.StdCall)]        internal static extern int PQNVR_GetDeviceList(uint userid, TDevicelist_Callback callback); 

热点排行