• (原)解决精伦iDR200 SDK在.NET开发环境中提示"尝试读取或写入受保护的内存"错误


    场景:

    开发环境
     WindowsXP Sp3 简体中文
            VisualStudio 2005 中文 SP1       
    接口版本
            Sdtaip.dll  Version  2006年11月15日, 9:34:36
            WltRS.dll   Version  2006年11月15日, 9:34:36
    此例程在VB下运行正常,通过VS2005升级工具自动升级到VB.net后,第一次运行正常,第二次运行后在获取身份证信息后出现出现附件中错误。

    解决过程:

       经实验:1、代码在VB项目下没有问题,但转到C#下即出现错误。

                 2、考虑可能变量声明长度、类型等与VB不同,于是转到VB.net,同样出现错误。

                 3、将SDK重新使用VB封装成OCX然后使用,VB.net,C#调用依然有错误。

                 4、偶然一次看到VB原始例子中把照片加载项注释掉了,于是尝试不加载图片,OK不再报错了。

                 5、检查在.net加载图片和不加载图片时图片文件的状态,分别不占用和不占用,找到问题所在了,VB与.net加载图片的方式不同,VB加载完成即释放,但.NET始终占用,这个应该是开发工具的机制不同。

    最终解决办法:(参考:GDI+中发生一般性错误” 的终极解决办法,没找到最原始出处

                 Bitmap bmp = new Bitmap("photo.bmp");
                 Bitmap bmp2 = new Bitmap(102, 126,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                 Graphics draw = Graphics.FromImage(bmp2);
                 draw.DrawImage(bmp, 0, 0);
                 pEditIDCard.Image = (Image)bmp2;
                 draw.Dispose();
                 bmp.Dispose();

    至此开发完成。

    感谢精伦技术部、市场部各位朋友的支持!

         

  • 相关阅读:
    你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道
    c++nullptr(空指针常量)、constexpr(常量表达式)
    c++bind函数使用
    WordPress高亮代码插件enlighter自定义CSS
    终于有人把云计算、大数据和人工智能讲明白了!
    14. vue源码入口+项目结构分析
    13. Vue CLI脚手架
    12. Vue搭建本地服务
    11. webpack配置Vue
    10. vue之webpack打包原理和用法详解
  • 原文地址:https://www.cnblogs.com/spymaster/p/1251952.html
Copyright © 2020-2023  润新知