C#调用c写的dll 出现:尝试读取或写入受保护的内存。这通常指示其他内存已损坏

仙人掌cmh 2015-07-26 09:36:11
求助各位大神!
我最近在用C#封装一个C写的dll,在调dll中的方法时,时不时会报 “尝试读取或写入受保护的内存。这通常指示其他内存已损坏”。出现这样的问题,重启下机器就会好了,不过这也不是解决方案,继续大神帮我看看,如何才能杜绝这个问题。

char* __readPeopleInfo_json()这个是C写的dll中的方法定义

下面是C#引用及调用的代码
[DllImport("HealthyCarder.dll")]
public static extern IntPtr readPeopleInfo_json();

IntPtr lpByte = WSCall.DllImport.readPeopleInfo_json();
outputData = Marshal.PtrToStringAnsi(lpByte);



...全文
293 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfqsy 2015-07-28
  • 打赏
  • 举报
回复
定义类型不对?
ajianchina 2015-07-27
  • 打赏
  • 举报
回复
让调用方清理堆栈再看看 [DllImport("HealthyCarder.dll", CallingConvention = CallingConvention.Cdecl)]
蒋晟 2015-07-27
  • 打赏
  • 举报
回复
这个返回值谁在什么时候负责释放啊?
j34jyj94ksigj4j 2015-07-26
  • 打赏
  • 举报
回复
可以检查一下是否是因为指针为空,类似于.net的NullReferenceException,未将引用设置到对象的实例的错误,指针会报内存错误

110,571

社区成员

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

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

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