qq_42514040 2023-12-29 14:55 采纳率: 0%
浏览 71
已结题

Unity控制佳能实时画面,如何解决抛出异常?

关于 Unity控制佳能单反拍照及数据获取。
Unity控制佳能实时画面。
我发现在Editor里面运行 没有任何问题,
但是一旦打包出PC端,运行exe会在:

//create stream to image
unsafe { ums = new UnmanagedMemoryStream((byte*)jpgPointer.ToPointer(), (long)length, (long)length, FileAccess.Read); }
        
    //把unmanageedMemoryStream类型的ums转成Bitmap
        TextureBitmap = new Bitmap(ums, true);
        ms = new MemoryStream();
        //用System.Drawing.Bitmap的方法将Bitmap转成MemoryStream
        TextureBitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        //将MemoryStream转成Bytes
        TextureBytes = ms.GetBuffer();

TextureBitmap = new Bitmap(ums, true);

这一段 抛出异常System.TypeInitializationException: the type Initializer for ManagedToNative

  • 写回答

19条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-12-29 14:56
    关注
    获得0.45元问题酬金

    引自微信小程序:皆我百晓生

    问题分析:
    根据你提供的信息,问题似乎是在尝试将 unmanagedMemoryStream 类型的 ums 转换为 Bitmap 时抛出了类型初始化异常(System.TypeInitializationException)。这可能是由于在 PC 端打包时缺少某些依赖项或出现了其他问题导致的。

    解决方法:

    1. 确保在 Unity 项目中正确地引用了相关的依赖项,并在打包时将其包含在内。可以检查 Unity Package Manager 和 Assets 文件夹中的依赖项。
    2. 确保在运行 exe 文件时,所有的依赖项(如 DLL 文件)都在相应的目录中。可以将依赖项手动复制到与 exe 文件相同的目录下,或者考虑使用 Unity 的构建设置来确保依赖项被正确地打包和部署。
    3. 尝试在代码中添加更多的异常处理来捕获可能发生的异常,并给出错误信息。例如,在转换 Bitmap 时可以使用 try-catch 块来捕获并输出异常信息。
    try
    {
        TextureBitmap = new Bitmap(ums, true);
    }
    catch (Exception ex)
    {
        Debug.LogError("Failed to convert unmanagedMemoryStream to Bitmap: " + ex.Message);
    }
    

    通过对异常进行捕获和输出,可以帮助你更好地定位问题所在,并提供更多的信息以便进一步调试。

    如果问题仍然存在,请提供更多相关的代码和详细的错误信息,以便更好地帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 修改了问题 12月29日
  • 创建了问题 12月29日