首页 > 编程语言 >Unity 捕获C++ dll的Crash

Unity 捕获C++ dll的Crash

时间:2023-12-22 15:23:40浏览次数:43  
标签:调用 Crash C# C++ dll try Unity 崩溃 异常

转载:C#程序调用第三dll引起崩溃,但是try无法捕捉到第三方dll的异常-.net程序调试-少有人走的路 (skcircle.com)

 

问题:一个第三方的dll,调用它的函数会引起程序崩溃,但是try却无法捕捉到此异常。

 

因为没有Try到异常,那么一个未处理的异常,会导致整个进程终止。这就是程序会崩溃的原因。

 

这个问题,可以参考微软的一篇说明:

CLR 完全介绍: 处理损坏状态异常

 

http://msdn.microsoft.com/zh-cn/magazine/dd419661.aspx

 

勇哥的理解是: 某些第三方的dll不受管理,C#的try捕获不到。

通过添加HandleProcessCorruptedStateExceptionsAttribute属性来解决这个问题

C#
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute()]
private void ThirdPartyCall()
{
    try
    {
            return Call3rdPartyFunction()
    }
    catch (Exception exInstantiate)
    {
        ...
    }
}

 

实际一个项目,客户的mes采用dll方式调用,其中的一个函数偶尔会调用引发程序崩溃。

依上面处理后,可以正常捕获到异常,至少让程序不至于崩溃。

这种问题,其实根本解决的办法是让客户去改,为啥你的dll会调用引发此种异常?

因为dll和dll的标准调用方式都是客户给出的。

 

标签:调用,Crash,C#,C++,dll,try,Unity,崩溃,异常
From: https://www.cnblogs.com/Jason-c/p/17921669.html

相关文章

  • DOTS Unity.Physics物理引擎碰撞事件处理
    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来执行:   st......
  • CommunityToolkit.Mvvm 之 通过一个属性控制一个按钮是否禁用 及 按钮执行费时需任务
    要达到的目的:通过一个属性控制一个按钮是否禁用当按钮执行费时需任务时,按下禁用按钮,任务完成后自动解除禁用1. 属性定义1[ObservableProperty]2[NotifyCanExecuteChangedFor(nameof(SettingParamCommand))]//属性变化时通知对应的命令3privateboolallowOperator;2.......
  • static关键字在C/C++中的用法
    在C++中,static关键字有几种不同的用法:1.静态(局部)变量在函数内部声明的变量或类中声明的变量前加上static,表示这个变量的生命周期为整个程序运行期间,而不是仅在函数执行期间。静态变量在第一次调用时初始化,之后保持其值直到程序结束。voidfunc(){staticintcount......
  • Unity3D iOS 系统与 Unity 交互中如何实现参数传递详解
    在Unity3D开发中,与iOS系统的交互是非常常见的需求。而在交互过程中,参数传递是非常重要的环节。本文将详细介绍在Unity3DiOS系统与Unity交互中如何实现参数传递,并给出技术详解以及代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事......
  • Unity3D 背包系统的渲染如何优化详解
    Unity3D背包系统是游戏中常见的一个功能,玩家可以在游戏中收集或购买各种道具,然后将其放入背包中进行管理。然而,当背包中的道具数量增加时,往往会导致游戏的性能下降,因为需要渲染大量的道具图标和信息。因此,如何优化背包系统的渲染成为了游戏开发中的一个重要问题。对啦!这里有个游......
  • Unity3D 自定义Shader 与 内置Shader 如何整合详解
    Unity3D是一款非常流行的游戏开发引擎,它提供了丰富的内置Shader供开发者使用。然而,有时候我们需要根据具体需求自定义Shader来实现特定的效果。本文将详细介绍Unity3D中如何整合自定义Shader和内置Shader,并给出相关的技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了......
  • C++基础 -11- 类的构造函数
     ———————类的构造函数——————— ......
  • C++ Qt开发:StandardItemModel数据模型组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍StandardItemModel数据模型组件的常用方法及灵活运用。QStandardItemModel是Qt中用于存储标准......
  • Qt/C++视频监控Onvif工具/组播搜索/显示监控画面/图片参数调节/OSD管理/祖传原创
    一、前言能够写出简单易用而又不失功能强大的组件,一直是我的追求,简单主要体现在易用性,不能搞一些繁琐的流程和一些极难使用的API接口,或者一些看不懂的很难以理解的函数名称,一定是要越简单越好。功能强大主要体现在功能的完整性,常规的接口肯定是必备的,然后在默认值方面,尽量将值设......
  • Visual Studio如何再次配置一个曾经配置过的C++库?
      本文介绍在VisualStudio软件中调用C++各种配置、编译完毕的第三方库的方法。  在撰写C++代码时,如果需要用到他人撰写的第三方库(例如地理数据处理库GDAL、矩阵运算库Armadillo等),并不能像Python等语言那样,安装好库后直接在不同代码文件中使用;而是需要每一次新建一个代码文......