首页 新闻 会员 周边

C#调用C++的DLL时,System.StackOverflowException”类型的未经处理的异常出现在 ASD.PSBCTrade.dll 中。

0
悬赏园豆:5 [已解决问题] 解决于 2019-01-30 14:08

 

这个方法是在调用WCF时才出现,如果是单单直接调用的话,那是没有问题的。

也就是在程序中写了两种方法来调用,一个是用WCF,一个是直接调用,在用WCF方法时就报这个错······

繒經最羙的主页 繒經最羙 | 初学一级 | 园豆:178
提问于:2013-02-04 23:07
< >
分享
最佳答案
0

别用StringBuilder

收获园豆:5
Firen | 大侠五级 |园豆:5385 | 2013-02-05 13:02

那用什么啊?

繒經最羙 | 园豆:178 (初学一级) | 2013-02-05 13:52

@十八岁的天空: 

StringBuilder outBuf = new StringBuilder("",1024*1000);这个改用public StringBuilder(int capacity, int maxCapacity);重载试试。

在某些环境中,必须将定长的字符缓冲区传递到非托管代码中以进行操作。在这种情况下,只传递字符串不起作用,原因是被调用方无法修改传递的缓冲区的内容。即使字符串是通过引用传递的,仍然无法将缓冲区初始化为给定的大小。

解决方案是将 StringBuilder 缓冲区作为参数而不是字符串传递。StringBuilder 可以由被调用方取消引用和修改,条件是它不超过 StringBuilder 的容量。还可将其初始化为固定长度。

Firen | 园豆:5385 (大侠五级) | 2013-02-05 17:02

@Firen: 我知道问题所在了!!!不是StringBuilder的问题,是两个语言之间的差距问题!!!!谢谢!!!

繒經最羙 | 园豆:178 (初学一级) | 2013-02-17 17:11

@繒經最羙: 这个问题是怎么解决的?我也遇到了,求助

cmh123 | 园豆:200 (初学一级) | 2015-06-11 09:28
其他回答(4)
0

如果是绝对路径的话,C:/EncryptLib.dll 改成 C:\EncryptLib。

是部署在IIS中吗?你可以把代码放在 aspx 页面中测试下。

有可能是权限问题。

Launcher | 园豆:45045 (高人七级) | 2013-02-05 09:16

是部署在IIS中,不是路径问题,应该换成是直接调用的话,是可以的,只是一用WCF调用才会出现这个错误,老是提示这个StringBuilder的堆栈溢出呐·····

支持(0) 反对(0) 繒經最羙 | 园豆:178 (初学一级) | 2013-02-05 11:46
0

路径不都是C:\\EncryptLib.dll这种形式么?

顾晓北 | 园豆:10844 (专家六级) | 2013-02-05 10:17

老是提示StringBuilder线程处于堆栈溢出状态······

支持(0) 反对(0) 繒經最羙 | 园豆:178 (初学一级) | 2013-02-05 11:49
0


提示
回复内容太短

繒經最羙 | 园豆:178 (初学一级) | 2019-01-30 14:07

2013-02-05。。。

支持(0) 反对(0) lomafor_u | 园豆:202 (菜鸟二级) | 2019-01-30 16:44
0

entrypoint是什么鬼

lomafor_u | 园豆:202 (菜鸟二级) | 2019-01-30 16:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册