L listen_snow Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-06 #1 动态链接库接口的参数如何才能访问?我写了个库文件,它和主程序的数据传递是通过参数实现的,可是主程序调用这个库文件接口时,却不能访问带回接口的参数值,这是什么原因
L listen_snow Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-06 #3 library Login; uses SysUtils, Classes, PubUnit in '../Public/Pubunit.pas', LoginDm in 'LoginDm.pas' {dmLogin: TDataModule}, Loginfrm in 'Loginfrm.pas' {frmLogin}; {$R *.res} function UserLogin(var sErrMsg :shortstring:integer;export;stdcall; var sErr: shortstring; begin result := -1; try try frmlogin := Tfrmlogin.Create(nil); frmLogin.ShowModal; [green][/green] sErr := Pchar(frmlogin.sErrMng); red][/red] sErrMsg := Pchar(frmlogin.sErrMng); //程序运行到绿色地方正常,到红色地方就出错。不知道为什么 finally frmlogin.Free; end; except on E:exception do begin sErrmsg := e.Message; end; end; end; exports UserLogin index 1 name 'UserLogin', begin end.
library Login; uses SysUtils, Classes, PubUnit in '../Public/Pubunit.pas', LoginDm in 'LoginDm.pas' {dmLogin: TDataModule}, Loginfrm in 'Loginfrm.pas' {frmLogin}; {$R *.res} function UserLogin(var sErrMsg :shortstring:integer;export;stdcall; var sErr: shortstring; begin result := -1; try try frmlogin := Tfrmlogin.Create(nil); frmLogin.ShowModal; [green][/green] sErr := Pchar(frmlogin.sErrMng); red][/red] sErrMsg := Pchar(frmlogin.sErrMng); //程序运行到绿色地方正常,到红色地方就出错。不知道为什么 finally frmlogin.Free; end; except on E:exception do begin sErrmsg := e.Message; end; end; end; exports UserLogin index 1 name 'UserLogin', begin end.
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-06 #4 DLL 里面不能使用 var 定义参数以传出数据。
L listen_snow Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-06 #5 那么如果想从DLL里传出数据都有什么方式呢?
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-06 #6 1.利用函数的返回值; 2.发送 WM_COPYDATA 消息; 3.内存共享文件共享数据; 4.磁盘文件共享数据,例如数据库;