尝试读取写入受保护的内存。这通常指示其他内存已损坏?

herbertkiba 2009-04-24 01:21:19
[DllImport("Syn_IDCardRead.dll", EntryPoint = "Syn_ReadMsg", CharSet = CharSet.Ansi)]
public static extern int Syn_ReadMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData);
这是一个身份证扫描读卡器外调DLL 的函数 参数传入都是正确的
求教高手 此问题卡了我半个月了。。。就是解决不了 老板快给我断粮了 55555
在自己的笔记本上运行读取身份证成功,但是换到台式机上就完全不行 老是报‘尝试读取写入受保护的内存。这通常指示其他内存已损坏’ 试了好几台机都这样 本人比较小白 求高手指点12 跪求~~
...全文
627 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxiju203 2011-04-11
  • 打赏
  • 举报
回复
数据结构定义也要正确。
xxiju203 2011-04-11
  • 打赏
  • 举报
回复
你的机器什么系统?目标机器什么系统?
试试在目标机器上以管理员身份运行你的程序。试试int类型改为long类型,并确认读卡器驱动安装正确。调用的DLL位于你的程序根目录或者系统System32目录。
king2101 2011-04-11
  • 打赏
  • 举报
回复
我也遇到这个问题了,楼主怎么解决的啊!
yinrongg 2010-09-30
  • 打赏
  • 举报
回复
CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall) 这些量设对了吗
yinrongg 2010-09-30
  • 打赏
  • 举报
回复
c++的函数原型是怎么样的?
yu_xiaot 2010-09-30
  • 打赏
  • 举报
回复
之前回答过一个类似问题,但是这种产生的环境往往不一定一样,你可以参考一下。
http://topic.csdn.net/u/20100827/16/accee1a4-feb4-43d9-8a17-3b69f1a1a35d.html
@井九 2010-09-30
  • 打赏
  • 举报
回复
权限或者台式机64位的?
不行直接拿到台式机上编译一下调试。
diy2005 2010-09-30
  • 打赏
  • 举报
回复
我也遇到问题了 真是不知道该怎么办啊?
未处理的“System.StackOverflowException”类型的异常出现在 法方程系数阵快速求逆程序.exe 中。
austo 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 herbertkiba 的回复:]
谢谢 大家的帮忙 4楼的前辈
但是在我自己本本上 可以跑而且读身份证都正常 换到台机上就不行了 这是为什么呢?
类型我都是过了 还是老样子
[/Quote]

弄明白了没?
herbertkiba 2009-04-24
  • 打赏
  • 举报
回复
谢谢 大家的帮忙 4楼的前辈
但是在我自己本本上 可以跑而且读身份证都正常 换到台机上就不行了 这是为什么呢?
类型我都是过了 还是老样子
qqiuzaihui 2009-04-24
  • 打赏
  • 举报
回复
支持四楼, 我也遇到过类似的问题. 用的也是跟四楼同样的方法解决了.
freewind0521 2009-04-24
  • 打赏
  • 举报
回复
up
mark620 2009-04-24
  • 打赏
  • 举报
回复
像这样的外调函数一般都是C++语言写的,如果C#调用的话会因为参数类型不一致,弹出‘尝试读取写入受保护的内存。这通常指示其他内存已损坏’ 这个错误。通常解决办法是将他们的类型转换成一样的即可。比如从Int16转换成Int32之类的转换。本人上次做项目也用到了外调DLL,出现类似问题,后来转换类型就好了。
wujinjian2008n 2009-04-24
  • 打赏
  • 举报
回复
应该是 函数不正确
xiaOdl 2009-04-24
  • 打赏
  • 举报
回复
我做过的考勤卡结构,看看能不能有帮助:)
    
[StructLayout(LayoutKind.Sequential)]
public struct EMATTCARDINFO
{// 考勤卡记录结构
public int nCardID;//卡序列号
public int nPersonID;//工号
public int nGrade;//级别与分组,暂无意义
public int nGroup;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string strName;//姓名
}
xiaOdl 2009-04-24
  • 打赏
  • 举报
回复
硬件连接问题或者调用函数不正确,则会报‘尝试读取写入受保护的内存。这通常指示其他内存已损坏’

111,126

社区成员

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

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

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