C#调用delphi动态库,总是报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

动态库函数定义functionInitDevice(rDevice:TPM_DeviceInfo):Integer;stdcall;结构体说明:TPM_DeviceInf... 动态库函数定义function InitDevice(rDevice : TPM_DeviceInfo) :Integer ; stdcall ;
结构体说明:
TPM_DeviceInfo = record
DevNo : Byte; //设备编号
SystemID : Integer; //系统ID
DevType : Byte; //设备类型
DevClassCount : Integer;
DevClass : PChar; //设备类型的具体型号
DevRemarkCount : Integer;
DevRemark : PChar; //设备说明
LaneNo : Byte; //道号 靠近治超站方向为1,依次往外编;0为属于整条道路的不归属于那条道
Direction : Word; //上下行方向0无方向1上行线2下行线
CommType : Byte; //通讯类型0:com口通讯1:tcp/ip通讯
IPAddrCount : Integer;
IPAddr : PChar; //连接的ip地址
TCPPort : Integer; //连接的端口号
ConnectTimeOut : Integer; //连接网口超时时间
ReadTimeOut : Integer; //读取数据超时时间
ComNoCount : Integer;
ComNo : PChar; //COM串口号
BoundRate : Integer; //com波特率
ByteBit : Byte; //com比特位
StartBit : Byte; //com起始位
EndBit : Byte; //com终止位
ParityCheck : Integer; //com是否奇偶校验 0不校验1校验
ParityBit : Byte; //com校验类型0:None,1:Odd奇,2:Even偶,3:Mark,4:Space
FlowContorl : Byte; //com是否进行流控制
Active : Byte; //设备状态0设备故障1设备工作良好
Status : Byte; //设备是否启用0不启用1启用
end;
PPM_DeviceInfo = ^TPM_DeviceInfo;
展开
 我来答
黎明808
2014-09-18 · TA获得超过2325个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:49.8万
展开全部
你看看是不是调用了已调用资源,这样会出现类似问题;例如:每次读取的图片名字都是一样photo.bmp。所以第一次读取成功后,刚存入的图片还在使用中,第二次读取一张又以同样的名字放到这个路径下边,这就需要覆盖第一次读取的图片,而第一次读取的图片正在使用,就会出现错误。
你的这个是不是先占用了端口,然后又用次调用此端口;或者调用后没有关闭。或者你读写一个地址,接着又读写这个地址;只看你的数据结构很难判断。一般情况都是这样
希望对你有用。
追问
已经解决了 不是这个问题
我给结构体里的几个string赋了初始值就可以了
不过还是谢谢你的回答 分给你了
追答
晕死 没有赋初始值,小弟佩服。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式