C#调用C回调函数后,程序奔溃问题
2015-09-15 19:40
323 查看
原始代理声明
C函数导入
回调函数
使用上面的方式,会导致C#在调用完后,释放pData内容,导致C程序崩溃
所以在声明代理的时候,说明是C回调,不回收里面资源
修改后代理
delegate void DlgVideoStreamCallBack(IntPtr pData, int size, int height, int width, IntPtr pUserData);
C函数导入
[DllImport("peerclient.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "Webrtc_ResigsterLocalVideoCallBack")] public static extern void Webrtc_ResigsterLocalVideoCallBack(DlgVideoStreamCallBack callback, int thread_id);
回调函数
static void LocalVideoStreamCallBack(IntPtr pData, int size, int height, int width, IntPtr pUserData) { }
使用上面的方式,会导致C#在调用完后,释放pData内容,导致C程序崩溃
所以在声明代理的时候,说明是C回调,不回收里面资源
修改后代理
[System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.Cdecl)] delegate void DlgVideoStreamCallBack(IntPtr pData, int size, int height, int width, IntPtr pUserData);
相关文章推荐
- .NET基础--结构体
- .NET基础--枚举
- .NET基础--do-while
- 从 C#编写的Exe里面提取图标和图片
- C# 泛型及继承层次对象的序列化及反序列化
- C# 泛型
- c#编码规范(转载)
- C# 之屏幕找图
- C# MVC 项目的创建和发布过程
- C#格式化数值结果表
- C# 编写Windows Service(windows服务程序)
- C#创建windows服务搭配定时器Timer使用实例
- C#中缓存的基本用法总结
- C#获取管理员权限
- C#实现邮件发送,可以添加附件,发件人、收件人信息从xml文件读取
- (C# File) 文件操作
- C#去掉窗口最小化时左下角的窗口
- C# 打开目录并选中文件的相关问题
- C# using用法详解
- 重新学习C# 之 变量