在.net 2.0下C#调用Delphi的Dll会出现异常,在.net 1.1下调用正常?

zhaohui_1981 2006-12-28 11:36:07
C#程序中调用Delphi写的DLL中的接口,在.net 2.0环境下多次调用同一个接口会出现如下错误
未处理的“System.StackOverflowException”类型的异常出现在 mscorlib.dll 中。
排错提示:
确保您没有无限循环或无限递归。
获取此异常的常常规帮助。

但是接口中并没有循环或无限递归。

但在.net 1.1环境下确没有这个错误。
接口声明如下
[DllImport("ShortMessageAPI.dll",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern int DoSendMessage(string vBusinessid, string vFromNumber, string vToNumberstring, string vMessage,string vFlag,
ref string Buf, int BufLen);
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
carolineREN 2007-01-08
  • 打赏
  • 举报
回复
请问这个问题最终怎么解决的?
liujia_0421 2006-12-29
  • 打赏
  • 举报
回复
出现这个错误,一般有下列些原因,可以参考一下:

1,使用了一个或多个非常非常大的对象(比如一个几千万字的字符串或对一篇长文章没有使用StringBuilder而直接用string类进行加减和replace等操作)

2,使用了层次很深的递归调用(可能是无限递归)因为在父函数进入子函数的时候需要把父函数当前的状态push(术语叫现场保留)子函数调用结束再pop,这样在层次很深的时候,还没有开始pop就已经push很多次导致溢出。

3,在a里调用b,又在b里调用相同参数的a,造成无限循环,原理和上面一样,最常见是在2个类的构造函数中分别new了一个对方。
yi10000 2006-12-29
  • 打赏
  • 举报
回复
我感觉还是程序逻辑有问题,导致循环和递归

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧