你可能是在dll创建了form,退出时没有free

解决方案 »

  1.   

    重载以下函数:
    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
      

  2.   

    你不用showmessage。可以把字符串参数作为返回值传出来,在调用这个方法的地方再把这个字符串showmessage. 试一下。
    function......
      Result := s + ' test dll '
    ...
      

  3.   

    你不用showmessage。把这个过程改为函数,把字符串参数作为返回值传出来,在调用这个方法的地方再把这个字符串showmessage. 试一下。
    function......
      Result := s + ' test dll ';
    ...
      

  4.   

    补充:不好意思发错地方了
    给你一个例子:library VS7530;uses
      SysUtils, Classes, Dialogs,
      ModifyPassword in 'ModifyPassword.pas' {Form1};{$R *.res}
    procedure CallDll(S: String); stdcall;
    begin
      ShowMessage(S);
    end;exports
      CallDll;
    begin
    end.unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    procedure CallDll(S: String); stdcall; external 'VS7530.dll';var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      CallDll('sss');
    end;end.
      

  5.   

    建议在dll中不要使用ansistring、string,要用pchar
      

  6.   

    建议在dll中不要使用ansistring、string,要用pchar
      

  7.   

    最好参数使用 PChar 类型。试试下面:
    procedure DllCalled(AHandle: Integer; AStr, ACaption: PChar); stdcall;
    begin
       MessageBox(AHandle, AStr, ACaption,
          MB_TASKMODAL or MB_ICONINFORMATION or MB_OK);
    end;