动态链接库参数传递问题?(50分)

  • 主题发起人 主题发起人 wxf_wxf
  • 开始时间 开始时间
W

wxf_wxf

Unregistered / Unconfirmed
GUEST, unregistred user!
我应如何将动态链接库中的数据作为参数传出?
 
很简单啊!假如在库中有一个整数变量X要传给外部程序,在库中建立一个过程,将X交给返回值
最后将这个函数导出就可以了
function exportX:integer;stdcall;
begin
result:=X;
end;
 
传址参数
 
假如我传递多个参数呢?
 
procedure exportSomeValue(var v1, v2:integer);stdcall;
begin
v1:=xxx;
v2:=xxx
end;

 
long GetVal(long *Vala,long *Valb)
{
*Vala = ...;
*Valb = ...;
return (0);
}
调用时传入指针就可以了。
 
先把数据库中的数据保存到一个变量中,在用变量做参数。我想这个方法可以吧[:D]
 
在从动态库中调用和从本地调用没有本质的区别,关键是搞清内存的分配与释放。
例:
void GetDateTimeStr(char *Date, char *Time, int *Other)
{
strcpy(Date, DateToStr(Now()).c_str());
strcpy(Time, TimeToStr(Now()).c_str());
*Other = 12345;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char sDateBuf[20]="", sTimeBuf[20]="";
int iValue;
GetDateTimeStr(sDateBuf, sTimeBuf, &iValue);
ShowMessage(iValue);
}
 
虽然我还没有试过"在从动态库中调用和从本地调用“是否有本质的区别则,我试一下再说?
 
多人接受答案了。
 
后退
顶部