为什么回调函数不能加sdcall调用约定(50分)

  • 主题发起人 主题发起人 rovedream
  • 开始时间 开始时间
R

rovedream

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么回调函数不能加sdcall调用约定,如:<br>TMyCallProc=function (x,y:PChar):PChar;<br><br>function add(x,y:PChar):PChar; &nbsp; stdcall; //此处加stdcall调用会出错<br>begin<br> &nbsp;result:=PChar(strpas(x)+strpas(y) );<br>end;<br><br>function oper(x,y:PChar; pFun:Pointer):string;<br>begin<br> &nbsp;Result:=StrPas(TMyCallProc(pFun)(x,y) );<br>end;<br>=====================================================<br>oper(Pchar('s1'),pchar('s2'),@add) //调用这条语句会出错,但去掉stdcall正常执行<br>add(pchar('s1'),pchar('s2')) //直接执行还是没有问题,不管加不加stdcall<br>因为要用dll封装一些通讯协议,用了大量回调函数,而且dll要被别的语言调用,各位富翁有什么解决的办法没有,不用stdcall行不行
 
还顺便问一下,调用时直接用PChar('xx')传递参数的,函数执行完毕以后会不会释放内存,被调用函数体内和调用函数都没有FreeMem语句
 
TMyCallProc=function (x,y:PChar):PChar; stdcall;<br>注意定义应与调用相对应。
 
呵呵,果然是这样<br>好弱的错误,谢谢dreamisx
 
后退
顶部