高分求助:DLL调用问题时发生‘非法指针错误’(200分)

  • 主题发起人 主题发起人 linqi07
  • 开始时间 开始时间
L

linqi07

Unregistered / Unconfirmed
GUEST, unregistred user!
<br>delphi中声明如下<br>&nbsp;function Send(sSend,sReturn:pchar):pchar; stdcall; External 'Send.dll' name 'Send';<br>程序中调用<br><br>procedure TForm1.btnHandInClick(Sender: TObject);<br>var<br>&nbsp; &nbsp; sSend,sReturn:pchar;<br>&nbsp; &nbsp; SendMsg:string;<br>begin<br>&nbsp; &nbsp;SendMsg:='.......';//给SendMsg赋值<br>&nbsp; &nbsp;sSend:=stralloc(512);//分配内存块<br>&nbsp; &nbsp;strpcopy(sSend,SendMsg);<br>&nbsp; &nbsp;sReturn:=stralloc(512); &nbsp;//分配内存块<br>&nbsp; &nbsp;Send(sSend,sReturn);<br>end;<br><br>使用时有时正确,有时报‘无效的指针错误’,请问是为什么?<br>还有以上代码有什么问题以及建议。
 
难道没人理我吗?
 
真的没一个高手?让我太失望了。
 
Send.dll 中Send怎么写的
 
StrAlloc是过时的、为了与以前的版本兼容的函数,必须使用 StrDispose 释放<br>
 
dll源码我不知道,也不知道用什么编写的,只知道函数及参数。
 
StrDispose(sSend);<br>StrDispose(sReturn);<br>我释放了,忘了粘贴上来了。<br>你说StrAlloc是过时了?那应该用什么呢?
 
原型就是delphi的吗?还是你从c的原型翻译过来的?<br>如果是你从c的原型翻译过来的,那么贴出c的原型,我看对不对<br><br>一般申请可以用GetMem
 
那个dll不知道用什么写的,我只是在delphi中调用了它里面的函数。<br>我改成了getmem,释放用freemem,结果前面1-2次正常,后来会出现非法退出,<br>不知道什么原因?
 
to:Pipi能否留个QQ?方便交流?
 
后退
顶部