你好,能帮我看看这个dll调用后,当关闭窗体显示内存错误的问题吗?<br />调用dll代码如下,dll窗体就不用写了,很简单的<br /><br />unit uMain;<br /><br />interface<br /><br />uses<br /> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br /> Dialogs, Menus,uDM;<br /><br />type<br /> Tgetform=function(Classname:pchar;DM:TfrmDM):Tformclass;stdcall;<br /> Tinitialdll=procedure(DM:TfrmDM);stdcall;<br /> TForm1 = class(TForm)<br /> MainMenu1: TMainMenu;<br /> file1: TMenuItem;<br /> open1: TMenuItem;<br /> seconde1: TMenuItem;<br /> procedure FormCreate(Sender: TObject);<br /> procedure open1Click(Sender: TObject);<br /> procedure FormClose(Sender: TObject; var Action: TCloseAction);<br /> private<br /> { Private declarations }<br /> getform:Tgetform;<br /> initialdll:Tinitialdll;<br /> farproc:Tfarproc;<br /> public<br /> { Public declarations }<br /> end;<br /><br />var<br /> Form1: TForm1;<br />implementation<br />{$R *.dfm}<br />procedure TForm1.open1Click(Sender: TObject);<br />var form:Tform;<br /> dllhandle:cardinal;<br />begin<br /> dllhandle:=loadlibrary('dll1.dll');<br /> if dllhandle<>0 then<br /> begin<br /> farproc:=getprocaddress(dllhandle,'initialdll');<br /> if assigned(farproc)then<br /> begin<br /> initialdll:=Tinitialdll(farproc);<br /> initialdll(frmDM);<br /> end;<br /><br /> farproc:=getprocaddress(dllhandle,'Getform');<br /> if assigned(farproc)then<br /> begin<br /> Getform:=Tgetform(farproc);<br /> form:=Getform('TfrmDetail',frmDM).create(nil);<br /> form.ShowModal ;<br /> freeandnil(form);<br /> end;<br /> end;<br /> freelibrary(dllhandle);//主要是这段代码有问题<br />end;