关于C#调用DLL导致代码崩溃,调试程序结束

关于C#调用DLL导致代码崩溃,调试程序结束(非托管代码在缓冲区溢出)

最近遇到一个调用dll的问题,在调试过程中,调试时不知道什么原因导致代码直接崩溃从而调试结束,下面就看一下例子


```csharp
[DllImport(@"C:\HBB\Interface.dll")]
        public static extern int Abocs(StringBuilder strIn, StringBuilder strOut);

public string OnPay()
        {
            LogManager.Info("调用DLL开始-----------------------------------------------分割线: ");
            InPut = "入参";
            StringBuilder sb = new StringBuilder();
            StringBuilder OutPay =new StringBuilder();
            sb.Append(InPut);
            int state = Abocs(sb, OutPay);
            LogManager.Info("出参: " + OutPay.ToString());
            
            return OutPay.ToString();
        }
以上例子,是在运行到 `int state = Abocs(sb, OutPay);
`获取出参时遇到的,最后的解决方法是,给 StringBuilder 添加了长度,也就是 `OutPay.Length = 200;` 
这里要注意根据出参返回的长度,适度的调节大小,我最开始添加的是 `OutPay.Length = 20000;`
 这时依旧会导致代码报错,就导致绕了一个大圈,非常的绝望!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值