博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 与 .Net
阅读量:5327 次
发布时间:2019-06-14

本文共 855 字,大约阅读时间需要 2 分钟。

捕获C++的.dll抛出的异常

C#调用C++动态库如下,静态加载方式

[DllImport("FirmClient.dll", CallingConvention = CallingConvention.Winapi)]public extern static void Disp_Destroy(string inStr);

生产上遇到手机银行验签,调用C++封装的dll,若抛出的异常未捕获,会导致应用程序直接崩掉退出。

抛出 异常,提示: 由于未经处理的异常,进程终止。

原因:.Net4.0中,C#默认只处理 SEH 的异常,不处理 CSE 的异常。

解决方法:属性标识

[HandleProcessCorruptedStateExceptions][SecurityCritical]public void CheckCppDllException() {	try { }	catch(AccessViolationException avex) { ..loginfo }	catch(Exception ex) { ..loginfo }}

关于 AccessViolationException

当尝试读或写受保护的内存时会引发,向上冒泡到托管代码的非托管代码中的访问冲突总是包装在 中。

 

关于C#调用C++的问题总结,参见:

关于 Marshal.PtrToStringAnsi 中文乱码

byte[] bytes = System.Text.Encoding.Unicode.GetBytes(    Marshal.PtrToStringUni(audioOutput.psz_description)); //先转成UNICODE编码string dec = System.Text.Encoding.UTF8.GetString(bytes); //再转成UTF8

具体参见:

 

转载于:https://www.cnblogs.com/wjcx-sqh/p/10827932.html

你可能感兴趣的文章
Activity生命周期
查看>>
MFCC常用类介绍
查看>>
插入排序及使用二分查找优化
查看>>
关于python 输出中文
查看>>
java获取静态页面内容
查看>>
8.信号量
查看>>
22.监视文件
查看>>
算法入门
查看>>
Power Strings POJ - 2406,字符串hash
查看>>
Git发生SSL certificate problem: certificate ha错误的解决方法
查看>>
字符串题目
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
HTML基础
查看>>
汉字首字母
查看>>
Python基础
查看>>
mybatis中useGeneratedKeys和keyProperty的作用
查看>>
C# asp.net mvc,做 301 永久重定向!
查看>>
人民币大写工具
查看>>