谁帮我把下面的vc的结构转成delphi呢?赠送50分(50分)

  • 主题发起人 主题发起人 psynet123
  • 开始时间 开始时间
P

psynet123

Unregistered / Unconfirmed
GUEST, unregistred user!
void MP4_ServerSetStart(void(CALLBACK *StartCap)(DWORD dwChannel))
 
procedure MP4_ServerSetStart(StartCap: Pointer; dwChannel: DWORD);
 
//这样。<br>type TStartCap:procedure (dwChannel:DWORD);stdcall;<br><br>procedure MP4_ServerSetStart(StartCap:TStartCap);<br><br>//调用时只须这样。<br>//先定义一个回调函数_StartCap<br>procedure _StartCap(dwChannel:DWORD);stdcall;<br>begin<br>&nbsp; ShowMessage('调用了_StartCap函数');<br>&nbsp; ShowMessage(Format('dwChannel的值是:%u',[dwChannel]));<br>end;<br>//然后这样调用就行了<br>MP4_ServerSetStart(_StartCap);
 
接受 [xiaopei], &nbsp;的答案,分数会在2008-02-21 12:00转给你,主要的目的是让更多的人知道怎么转,谢谢!!!
 
但是现在有个问题, void MP4_ServerSetStart(void(CALLBACK *StartCap)(DWORD dwChannel)) &nbsp; 这个是某dll的函数,现在delphi要调用的话,把你的改成如下的是否可行?<br><br><br>//这样。<br>type TStartCap:procedure (dwChannel:DWORD);stdcall;<br><br>procedure MP4_ServerSetStart(StartCap:TStartCap); stdcall;external 'XXX.dll';<br><br>//调用时只须这样。<br>//先定义一个回调函数_StartCap<br>procedure _StartCap(dwChannel:DWORD);stdcall;<br>begin<br>&nbsp; ShowMessage('调用了_StartCap函数');<br>&nbsp; ShowMessage(Format('dwChannel的值是:%u',[dwChannel]));<br>end;<br>//然后这样调用就行了<br>MP4_ServerSetStart(_StartCap);
 
改正:<br>procedure MP4_ServerSetStart(StartCap:TStartCap);<br>VC默认调用是cdecl约定。所以上面那一句应该再在后面加一句cdecl关键字才是正确的。<br>procedure MP4_ServerSetStart(StartCap:TStartCap); cdecl;external 'DllName.dll';<br><br>MP4_ServerSetStart函数VC并没有声明为stdcall,所以默认应该是cdecl调用约定。
 
好的,再次谢谢
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
894
import
I
后退
顶部