| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3032 人关注过本帖
标题:C#调用Delphi写的DLL,报“尝试读取或写入受保护的内存”错误,请各位朋友指 ...
取消只看楼主 加入收藏
iamjerry
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2013-11-29
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
C#调用Delphi写的DLL,报“尝试读取或写入受保护的内存”错误,请各位朋友指点!
我C#程序里面调用我自己用Delphi写的DLL,调用InitReader这个函数正常,但调用RWCom这个函数后就报“尝试读取或写入受保护的内存”错误,请各位朋友指教!代码如下:
[DllImport("ExportMeter.dll")]
public static extern bool InitReader(string ComName, int Rate, int ParityBit, int iIntervalTimeout, int iDelay);
[DllImport("ExportMeter.dll")]
public static extern string RWCom(string ComData, bool bAns);

private string SendReceivedData(string strCmd, string strMsg, bool bBcc)
{
    string strReceivedData = "";
    string strReturnData = "";
    byte[] ASendData = GetSendByteArray(strCmd, strMsg, bBcc);
    string strSendData = pf.ByteArrayToHexString(ASendData, false);
    //向串口发送数据
    bool bRevDataOK = false;
    byte[] AReceivedData = null;
    if (ASendData[0] == 6) //发送数据后立即关闭串口更改波特率再打开串口接收数据
    {
        strReturnData = RWComUpdBaudrate(strSendData, SerialParam[0], int.Parse(SerialParam[0]), 2, 100, 3000);
        if (!strReturnData.Equals(""))
        {
            AReceivedData = pf.HexStringToByteArray(strReturnData);
            bRevDataOK = true;
         }
     }
     else
     {
         strReturnData = RWCom(strSendData, true);
         if (!strReturnData.Equals(""))
         {
             AReceivedData = pf.HexStringToByteArray(strReturnData);
             bRevDataOK = true;
         }
      }
      if (bRevDataOK) //读取数据成功
      {
          strReceivedData = Encoding.ASCII.GetString(AReceivedData);
          strReceivedData = strReceivedData.ToUpper();
          ShowReceiveData(strReceivedData);
      }
      return strReceivedData;
}
执行strReturnData = RWCom(strSendData, true);这行时就报“尝试读取或写入受保护的内存”错误
DLL中RWCom这个函数的定义是function RWCom(ComData: String; bAns: Boolean): String; stdcall;且这个函数没有任何问题,为何会报这个错,我都快疯了。调用InitReader这个函数正常。跪请各位大侠帮忙看一下,谢谢!
搜索更多相关主题的帖子: private public 朋友 
2013-12-23 18:56
iamjerry
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2013-11-29
收藏
得分:0 
Dll源码没有任何问题,我把DLL中RWCom这个函数写成如下,也报同样的错误。
function RWCom(ComData: String; bAns: Boolean): String; stdcall;
begin
  Result := ComData;
end;
2013-12-24 08:51
iamjerry
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2013-11-29
收藏
得分:0 
怎么没有朋友回呀,急呀!
2013-12-24 17:33
快速回复:C#调用Delphi写的DLL,报“尝试读取或写入受保护的内存”错误,请各位 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015082 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved