C#调用dll始终报"尝试读取或写入受保护的内存"

TT_12346333 2009-03-13 04:48:37
以下是我的源代码
[DllImport ("SmGwAPI.dll")]
private static extern int SMGPSendSingle(
int nNeedReply,
int nMsgLevel,
string sServiceID,
int nMsgFormat,
string sFeeType,
string sFeeCode,
string sFixedFee,
string sValidTime,
string sAtTime,
string sSrctermId,
string sChargeTermID,
string sDestTermID,
int nMsgLen,
string sMsgContent,
StringBuilder sMsgID,
ref int nErrorCode,
string sMsgType,
string sReserved);



public void smgpsendsingle(ref MT submit)
{

StringBuilder msgid=new StringBuilder(20);

byte[] bytes = Encoding.GetEncoding(this._encodetype).GetBytes(submit.MsgContent);
submit.MsgLen = bytes.Length;

if (bytes.Length > this._maxsmslength)
{
submit.MsgContent = Encoding.GetEncoding(this._encodetype).GetString(bytes, 0, this._maxsmslength);
submit.MsgLen = this._maxsmslength;
}

int times = 0;
int rt = -1;
lock(object1)
{

while (times < this._mtretry || this._mtretry == 0)
{
rt = SMGPSendSingle(submit.NeedReply,
submit.MsgLevel,
submit.ServiceID,
submit.MsgFormat,
submit.FeeType,
submit.FeeCode,
submit.FixedFee,
submit.ValidTime,
submit.AtTime,
submit.SrcTermID,
submit.ChargeTermID,
submit.DestTermID,
submit.MsgLen,
submit.MsgContent,
msgid,
ref submit.ErrorCode,
submit.MsgType,
submit.Reserved);

哪位大侠搭救一下
...全文
210 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
birdlonger 2009-03-16
  • 打赏
  • 举报
回复
估计是你声明的时候参数类型 对应错误..
给下DLL中的函数的定义让大家看下啊?
  • 打赏
  • 举报
回复
不用 loack看看
kongdelu2008 2009-03-15
  • 打赏
  • 举报
回复
用import引入DLL
gui0605 2009-03-15
  • 打赏
  • 举报
回复
参数类型是什么?
真相重于对错 2009-03-15
  • 打赏
  • 举报
回复
dll 的c 申明??
TT_12346333 2009-03-15
  • 打赏
  • 举报
回复
StringBuilder我设过256
其他参数我都是传0 不太可能超长,继续等
gzxlq 2009-03-13
  • 打赏
  • 举报
回复
我原来遇到就是因为数据宽度超过了

111,126

社区成员

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

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

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