这个C语言DLL的Delphi声明怎么写?

jin_zai 2005-10-10 03:28:05
int __stdcall LMac_Ascii( void *pMAC_Sour, int nMAC_SourLen, void *pMAC, int nMAC_Idx );
我写成这样对吗?
Function LMac_Ascii(pMAC_Sour:PChar;nMAC_SourLen:integer;pMAC:PChar;nMAC_Idx:integer):Longint; stdcall;
...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jin_zai 2005-10-10
  • 打赏
  • 举报
回复
那么按照pointer的写法,我的delphi程序段该怎么改写?谢谢
iloveqq 2005-10-10
  • 打赏
  • 举报
回复
同意cuilj(一云忆水) 的写法,我调用别人的H文件就是这样改写的
jin_zai 2005-10-10
  • 打赏
  • 举报
回复
C语言的调用例子如下:
int main( int argc, char **argv )
{
int i, j;
int nIdx;
char szTempStr[26];

nIdx = 2;
if( argc >= 2 )nIdx = atoi( argv[1] );
for( i = 0; i < 1; ++i )
{
if( argc >= 3 )
{
j = LMac_Ascii( argv[2], strlen( argv[2] ), szTempStr, nIdx );
szTempStr[8] = '\0';
printf( "%d %s\n", j, szTempStr );
}
}

}

但是我用delphi调用如下:
var
l,r:integer;
t:string;
s,m:pchar;
begin
t:='33600C91012005100914423099000000101';
l:=length(t);
s:=pchar(t);
GetMem(m,18);
r:=LMac_Ascii(s,l,m,2);
t:=StrPas(m);
application.messagebox(pchar(inttostr(r)+' '+t),'提示',64);
end;

总是得不到的C语言的结果(C语言的是正确的),
aiirii 2005-10-10
  • 打赏
  • 举报
回复
你原来写的,应该可以的
很土 2005-10-10
  • 打赏
  • 举报
回复
int __stdcall LMac_Ascii( void *pMAC_Sour, int nMAC_SourLen, void *pMAC, int nMAC_Idx );
可以写成:
function LMac_Ascii(pMac_Sour: Pointer; nMAC_SourLen: Integer; pMAC: Pointer; nMAC_Idx: Integer): Integer; stdcall;

其实你的写法也没错,因为调用时传递的是指针。
leonkim 2005-10-10
  • 打赏
  • 举报
回复
楼主:
void *pMAC_Sour
是两个函数指针吧?
Function LMac_Ascii(pMAC_Sour:pointer;nMAC_SourLen:integer;pMAC:pointer;nMAC_Idx:integer):integer; stdcall;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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