我用C#调用c++的dll,出现堆栈溢出的错误...

C+里是这样的ReadBaseMsgPhoto(unsigedchar*pMsg,char*len,char*directory);这样调用的m=BaseLib.Read... C+里是这样的 ReadBaseMsgPhoto(unsiged char * pMsg, char * len, char * directory);
这样调用的
m = BaseLib.ReadBaseMsgPhoto(ref Msg, ref Len, ref Files);报错 是这个
未处理的“System.StackOverflowException”类型的异常出现在 未知模块 中。
展开
 我来答
JINLegend
2013-06-22 · TA获得超过802个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:127万
展开全部
Msg,Len,Files都是string类型?那么不必加ref,因为引用类型本身就是指针类型。
更多追问追答
追问
谢谢,按你说的,改了以后错误没了,但是这个字符串是在函数里改写的,我去掉ref后,函数没有改变参数的值。
追答

原来你是要修改原字符串,那么

m = BaseLib.ReadBaseMsgPhoto(ref Msg, ref Len, ref Files);

保持不变,

ReadBaseMsgPhoto(unsiged char * pMsg, char * len, char * directory);

改为

ReadBaseMsgPhoto(unsiged char ** pMsg, char ** len, char ** directory);

在实现里

char* a=*pMsg;
……//字符串处理。
(*pMsg)=a;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式