library functiondll;{ }uses
SysUtils,
Classes;{$R *.res}
function Myselfs(a: string):integer;stdcall;
begin
result := strtoint(a);
end;function Myself(a: string):string;stdcall;
begin
result := a;
end;
exports Myselfs,Myself;
begin
end.--------------------------------------------------------------------------------
上面是DLL的源码,如下是调用.unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Myselfs(a:string):integer;stdcall;external 'functiondll.dll';
function Myself(a:string):string;stdcall;external 'functiondll.dll';var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := inttostr(Myselfs('1'));
end;procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text := Myself('1');----------出错;
end;end.
-----------------------------------------------------------------------
问:
1,是DLL不能返回STRING值,还是调用时写错啊?
2,如果想DLL返回来STRING,怎解决啊?
SysUtils,
Classes;{$R *.res}
function Myselfs(a: string):integer;stdcall;
begin
result := strtoint(a);
end;function Myself(a: string):string;stdcall;
begin
result := a;
end;
exports Myselfs,Myself;
begin
end.--------------------------------------------------------------------------------
上面是DLL的源码,如下是调用.unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Myselfs(a:string):integer;stdcall;external 'functiondll.dll';
function Myself(a:string):string;stdcall;external 'functiondll.dll';var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := inttostr(Myselfs('1'));
end;procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text := Myself('1');----------出错;
end;end.
-----------------------------------------------------------------------
问:
1,是DLL不能返回STRING值,还是调用时写错啊?
2,如果想DLL返回来STRING,怎解决啊?
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := inttostr(Myselfs('1'));
end;procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text := Myself('1');
end;
-------------------------------------------------
以上的没有问题,但在退出程序时,就出现异常,runtime错误.
可以再给指点吗?
同一样的错误.
即使在没有调用DLL的项目文件.dpr文件加了ShareMem
退出程序时也会发生异常啊.
可以了.
谢谢你.先去看看ShareMem