C函数在D中的调用

LevnWang 2007-03-05 11:11:50
C写的DLL中有一函数:
long senddata (long n1,char * comand ,long n2, char *senddata, char *device)
在delphi中应该如何调用?
请教同志们。
...全文
263 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LevnWang 2007-03-26
  • 打赏
  • 举报
回复
function senddata(comlen:Longint; com:PChar; leng:Longint; data:PChar; device:PChar): Longint;stdcall;external 'STANDCOM.DLL';

经测试没有错。
快乐老猫 2007-03-06
  • 打赏
  • 举报
回复
注意 stdcall 标志,如果对方按照API协议书写C函数,那么就必须使用 stdcall 标志,如果是按照C习惯书写的函数,就要做cdecl标志。建议双方按照API规范书写。
jadeluo 2007-03-05
  • 打赏
  • 举报
回复
申明成:
function senddata(n1: Longint; comand: PChar; n2: Longint; senddata, device: PChar): Longint; external 'XXX.dll'; stdcall; //注:stdcall有可能要换成cdecl, 这取决于C中的函数头是如何定义的了
jadeluo 2007-03-05
  • 打赏
  • 举报
回复
var
Command: String;
gdata : String;
device : String;
longg,ret,commandLen:longint;
begin
commandLen := 4;
longg := 9;
Command := Trim(rzedit1.Text)+'167'+'9'+'0'+'0';
device := 'COM1';
SetLength (gdata, 1024); //这个gdata应该需要先分配空间的
ret := getdata(commandLen, PChar(Command), longg, PChar(gdata), PChar(device));
showmessage(inttostr(ret));
end;
LevnWang 2007-03-05
  • 打赏
  • 举报
回复
function getdata(comlen:Longint; com:PChar; leng:Longint; data:PChar; device:PChar): Longint;external 'STANDCOM.DLL';

var
Command:Pchar;
gdata:Pchar;
device:Pchar;
longg,ret,commandLen:longint;
begin
commandLen:= 4;
longg:=9;
Command:=PChar(Trim(rzedit1.Text)+'167'+'9'+'0'+'0');
device:=PChar('COM1');
ret:=getdata(commandLen,Command,longg,gdata,device);
showmessage(inttostr(ret));
end;

这样调用行吗?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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