我用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”类型的异常出现在 未知模块 中。 展开
这样调用的
m = BaseLib.ReadBaseMsgPhoto(ref Msg, ref Len, ref Files);报错 是这个
未处理的“System.StackOverflowException”类型的异常出现在 未知模块 中。 展开
1个回答
展开全部
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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询