L love_xinwang Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #1 请问用c声明的一个函数怎样改成为用DELPHI声明?如何调用?<br>函数存在于aaa.dll中,它是用c写的,我现在要在DELPHI中调用<br>int WINAPI SubmitA(unsined long* SM_ID,unsined char* FCS)
请问用c声明的一个函数怎样改成为用DELPHI声明?如何调用?<br>函数存在于aaa.dll中,它是用c写的,我现在要在DELPHI中调用<br>int WINAPI SubmitA(unsined long* SM_ID,unsined char* FCS)
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #4 SubmitA(SM_ID :^ULONG, FCS :^UCHAR) :Integer; stdcall
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #5 应该是这样:<br>定义:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall<br>声明:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer;<br>begin<br>end;<br>已测试。无问题。
应该是这样:<br>定义:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall<br>声明:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer;<br>begin<br>end;<br>已测试。无问题。
L love_xinwang Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #6 unsined long*和unsined char*是指针类型的?
L love_xinwang Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #7 我倒觉得 FUNCTION SubmitA(SM_ID :^ULONG, FCS :^UCHAR) :Integer; stdcall<br>更正确,下午我要去测试,能再说的详细一点吗?
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #8 c中的指针参数同pascal的var关键字,都是传地址。
L love_xinwang Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #9 yyii_yyii,那如何调用呢?能举个例子吗?如果问题解决了,还可以高分奉送!(在线等待)
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #10 调用?我没理解错的话是不是从DLL中引入啊。<br>直接定义就可以:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall; external'c:/aaa.dll'<br>以后你程序中可以直接用它;<br><br>
调用?我没理解错的话是不是从DLL中引入啊。<br>直接定义就可以:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall; external'c:/aaa.dll'<br>以后你程序中可以直接用它;<br><br>
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #11 不需要在类中定义<br>type<br> TForm1 = class(TForm)<br> private<br> { Private declarations }<br> public<br> { Public declarations }<br> end;<br>//定义在此比较好<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall; external'c:/aaa.dll';<br><br>var<br> Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>end.
不需要在类中定义<br>type<br> TForm1 = class(TForm)<br> private<br> { Private declarations }<br> public<br> { Public declarations }<br> end;<br>//定义在此比较好<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall; external'c:/aaa.dll';<br><br>var<br> Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>end.
L love_xinwang Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #12 定义我搞清楚了,我指的是在程序中的调用,还有c中的unsigned类型和delphi中<br>string类型是不是兼容的?
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #13 调用就直接调好了<br>c中的unsigned是无符号的意思,所以unsined char* FCS就是<br>无符号字符串指针的意识,Delphi中的string是类类型,是不兼容的,<br>Delphi中使用BYTE类型的指针和C中的char*就一样了。
调用就直接调好了<br>c中的unsigned是无符号的意思,所以unsined char* FCS就是<br>无符号字符串指针的意识,Delphi中的string是类类型,是不兼容的,<br>Delphi中使用BYTE类型的指针和C中的char*就一样了。
Y yyii_yyii Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-19 #14 procedure TForm1.FormCreate(Sender: TObject);<br>var<br>aa Char;<br>bb:ULONG;<br>begin<br>GetMem(aa,100);<br>StrCopy(aa, 'aaaaa');<br>SubmitA(bb, aa);<br><br>end;
procedure TForm1.FormCreate(Sender: TObject);<br>var<br>aa Char;<br>bb:ULONG;<br>begin<br>GetMem(aa,100);<br>StrCopy(aa, 'aaaaa');<br>SubmitA(bb, aa);<br><br>end;