加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

检测从.NET调用的调用dll的崩溃

发布时间:2020-12-14 04:37:59 所属栏目:Windows 来源:网络整理
导读:我从.NET应用程序调用了一些本机dll(Delphi). 如果DLL中发生任何类型的崩溃,则整个.NET应用程序崩溃.如何防止这种情况并确保.NET应用程序不会崩溃并识别错误.我不需要来自本机dll的特定错误反馈(这是不可能的,因为它崩溃了).但我想写一些东西到我的.NET日志
我从.NET应用程序调用了一些本机dll(Delphi).
如果DLL中发生任何类型的崩溃,则整个.NET应用程序崩溃.如何防止这种情况并确保.NET应用程序不会崩溃并识别错误.我不需要来自本机dll的特定错误反馈(这是不可能的,因为它崩溃了).但我想写一些东西到我的.NET日志文件,如“xyz.dll崩溃”.

这是否可能从.NET中调用(Delphi或C)dll?

解决方法

如果你的DLL从导出的函数中抛出异常,就会发生这种情况. DLL不能这样做,所以你需要捕获DLL边界的所有异常,并将它们转换为错误代码返回值.

如果您无法控制DLL,则需要为其编写包装层.创建另一个本机DLL,它调用原始DLL并捕获它抛出的任何异常.您可以使用我怀疑的另一个Delphi DLL执行此操作,或者使用使用SEH捕获异常的C或C DLL执行此操作.

可以为这样的包装器DLL编写代码的生成脚本.如果你需要包装很多函数,你会想要这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读