C#调用C回调函数后,程序奔溃问题

2023-10-27

原始代理声明

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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#调用C回调函数后,程序奔溃问题 的相关文章

  • 具有相同参数类型但具有不同常量限定符的 std::vector 的转换

    问题很简单 静态转换 或其他一些转换 通常是安全的 std vector lt Foo gt to std vector lt const Foo gt 就二进制而言 我不明白为什么本机类型会有所不同 毕竟const是一种语言约束 不应影响
  • 深拷贝和动态转换 unique_ptr

    假设我有一个如下所示的类 class A virtual A class B public A class C public A 我还有一个 unique ptr 向量 它是这样声明的 std vector
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • .NET 5 EF Core SaveChangesAsync 因错误而挂起

    尽管这个问题有很多结果 但没有一个真正给我明确的答案 每次我尝试通过 AddAsync 和 SaveChangesAsync 方法插入错误数据 例如重复的主键 时 我都会看到以下日志 执行 DbCommand 失败 15 毫秒 我还在 SQ
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • 当需要不同数量和类型的参数时如何创建操作委托列表

    我们有一组大约两打的类 它们继承自具有抽象 Validate 方法的基类 当然 每个类都有不同的验证需求 但它们之间的不同组合需要规则 因此 正如您可以想象的那样 这导致了大量代码重复 例如 A 类需要规则 1 3 6 和 9B 类需要规则
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • valgrind 在 Raspberry Pi 上返回未处理的指令

    我最近一直在尝试在运行 Debian GNU Linux7 0 喘息 的树莓派 型号 b 上使用 valgrind 来调试分段错误 每次我在编译的 C 程序上运行 valgrind 时 都会得到类似以下内容的信息 disInstr arm
  • C++ 中是否有与 PHP 的explode() 函数等效的函数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中分割字符串 https stackoverflow com questions 236129 splitting a string in c 在 PHP 中 explode 函数将获取一个字
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • 将一个 IEnumerable 拆分为多个 IEnumerable

    我是 linq 新手 我需要根据指示器将 Couple string text bool Indicator 类型的 IEnumerable 拆分为多个 IEnumerable 我尝试使用skipWhile 和 TakeWhile 但没有找

随机推荐

  • UE4内置浏览器支持h264 mp4 视频 编译cef3 3071源码

    转载 原文链接 UE4内置浏览器支持h264 mp4 视频 编译cef3 3071源码 ue4 cef 鸿蒙老道的博客 CSDN博客首先ue4内置的CEF3 浏览器是不支持h264视频的 所以需要我们重新编译CEF内核 然后覆盖旧的版本一
  • 空闲时间不要接私活,要提升自己

    这个话题很纠结 现在社会 有很多人都在利用个人时间兼职赚钱 程序员俗称 接私活 其他行业称作兼职 比如下了班出去跑滴滴 周末兼职抢单送外卖等等 都是普通人很常见的兼职方式 甚至很多技术同行 我听说也有周末去跑滴滴和送外卖的 我觉得很不可思议
  • JVM-对象内存分配与回收细节问题

    对象内存分配与回收细节问题 1 禁用System gc System gc 会显示直接触发Full GC 同时触发老年代和新生代进行回收 而一般情况是我们认为 垃圾回收时自动进行的 无需手动触发 频繁的垃圾回收对系统性能造成较大影响 可以使
  • [数据分析与可视化] 基于matplotlib-scalebar库绘制比例尺

    matplotlib scalebar是一个Python库 用于在matplotlib图形中添加比例尺 它允许用户指定比例尺的大小 位置 字体和颜色 以及比例尺的单位 该库支持不同的比例尺单位 例如米 英尺 英寸等 matplotlib s
  • 一个51单片机矩阵键盘的扫描,消抖和键号显示程序

    51单片机的按键判断是一项很重要的功能 在蓝桥杯的比赛中必不可少 下面介绍一个稳定性比较好的矩阵键盘程序 首先介绍一下该矩阵键盘的基本原理 1 扫描 四条列线 接单片机的P2 4 P2 7口 电平都为1 四条行线 接P2 0 P2 3口 先
  • 交叉熵、信息熵、KL散度、互信息与Information Bottleneck【信息瓶颈IB】之间的关系

    Information Bottleneck IB 预备知识 交叉熵损失函数 CrossEntropy Loss 在DL中 交叉熵损失函数用作分类问题 使用它作为Loss Function时 在模型的输出层总会接一个softmax函数 交叉
  • js制作css滚动条,css、js实现自定义滚动条的两种方式

    一般默认的滚动条会比较丑 我们可以利用css或者js来实现实现自定义滚动条的功能 下面就整理2种实现方式 1 css自定义滚动条 需要在WebKit平台上才支持 代码如下 webkit scrollbar width 8px webkit
  • Python编程练习:翻转数字

    coding utf 8 10 翻转数字 难度 中等 通过键盘输入一个数字 若 1 该数字位各个位上的数字和为奇数 则将该数各位数倒叙打印 如122 各个位上的数字之和为1 2 2 5 打印221 2 若该数字各个位数之和为偶数 则直接打印
  • python中[::-1]是什么意思

    c 1 2 3 4 5 6 c 1 6 5 4 3 2 1 反转列表顺序 扩展 a 0 1 2 3 4 5 6 7 8 9 b a i j 表示复制a i 到a j 1 以生成新的list对象 b a 1 3 那么 b的内容是 1 2 当i
  • CMake Error: The source “xxx“ does not match the source “yyy“ used to generate cache. Re-run cmake

    目录 场景复现 解决方案 找到我们的编译路径 重新使用CMake编译 场景复现 今天使用CMake再次编译fmt源码时 cmake抛出一个错误 告诉我找不到一个路径 但我这个电脑本就没有这个路径 仔细一看这个路径是我在另一个电脑编译的路径
  • HTTP/HTTPS协议详解

    目录 一 HTTP详解 1 1 概念 1 2 HTTP的协议格式 1 2 1 HTTP请求体格式 1 2 2 HTTP响应体格式 1 3 HTTP请求方法 1 4 认识请求报头 1 5 HTTP请求过程 1 6 认识状态码 二 HTTPS详
  • 【动态系统的建模与分析】一阶系统的单位阶跃响应+时间常数-笔记

    一个一阶系统 其数学表达 做系统识别 令qin c 去记录高度的变化 可得图像 这个系统的响应为 如果其4s达到稳定时间 则 该系统传递函数为 则
  • vue金额格式化保留两位小数

    Vue filter number function data return data toFixed 2 在需要的地方 integralval 100 number 元
  • Nginx常用模块

    Nginx常用模块 文章目录 Nginx常用模块 1 Nginx常用模块 1 1 Nginx目录索引 下载模块 1 1 1 配置autoindex语法 1 1 2 autoindex配置实例 1 1 3上传资源 1 1 4 autoinde
  • 【嵙大OJ】Problem 1217: 编写函数:浮点数取整 (Append Code)

    Problem A 编写函数 浮点数取整 Append Code Time Limit 1 Sec Memory Limit 2 MB Submit 7000 Solved 2864 Submit Status Web Board Desc
  • 操作系统重要概念——异步性

    在多道程序环境下 允许多个进程并发执行 进程在使用资源时可能需要等待或放弃 进程的执行并不是一气成的 而是以走走停停的形式推进 如下举例 进程以不可预知的速度向前推进 何时执行 何时暂停 何时完成都是未知的 这就造成了系统的异步性
  • UUID 生成(源代码编译)

    根据定义 UUID Universally Unique IDentifier 也称GUID 在时间和空间都是唯一的 为保证空间的唯一性 每个UUID使用了一个48位的值来记录 一般是计算机的网卡地址 为保证时间上的唯一性 每个UUID具有
  • ++ 符号

    关于 符号 i i 刚好最近看到一个关于i i 的测试题就查询资料测试了一下 int i 10 int j 30 i i Console WriteLine i Console WriteLine i i Console WriteLine
  • ajax保存文件对话框_VBA学习笔记34-2:Excel对话框(FileDialog)

    学习资源 Excel VBA从入门到进阶 第34集 by兰色幻想 这篇笔记写对话框的FileDialog对象 开始前先把上篇漏写的改变窗口默认路径补一下 chdrive 盘符 可以改变默认驱动器 chdir 路径 可以改变默认路径 这两个默
  • C#调用C回调函数后,程序奔溃问题

    原始代理声明 delegate void DlgVideoStreamCallBack IntPtr pData int size int height int width IntPtr pUserData C函数导入 DllImport