在DLL中动态创建了一个Form
procedure ShowMyMsg(msg string);
var
f :TMyForm;
begin
f := TMyForm(Application.FindComponent('MYFORM'));
if f = nil then
begin
f := TMyForm.Create(Application);
f.name := 'MYFORM';
end;
f.Label1.Caption := msg;
....目的是重复使用f,而不必每次创建,在程序退出时由Application负责销毁f。
该过程在使用动态调用DLL时没有问题,但是静态使用DLL就出现调用OS函数错的提示
procedure ShowMyMsg(msg string);
var
f :TMyForm;
begin
f := TMyForm(Application.FindComponent('MYFORM'));
if f = nil then
begin
f := TMyForm.Create(Application);
f.name := 'MYFORM';
end;
f.Label1.Caption := msg;
....目的是重复使用f,而不必每次创建,在程序退出时由Application负责销毁f。
该过程在使用动态调用DLL时没有问题,但是静态使用DLL就出现调用OS函数错的提示
改成
f := TMyForm.Create(nil);看看
动态释放
EXE的APP和DLL的APP是两个东西!!EXE的APP不会释放DLL的对象的~~
所以还是要在DLL结束的时候自己释放!或者你就静态调用DLL函数,这样或学还可以!