var SaveExit : TDLLProc ;procedure LibraryProc(Reason: Integer);
begin
{Library exit code }
if Reason=DLL_PROCESS_DETACH then
begin
DllProc := @SaveExit ;
DataModule1.Free;
end;
end;exports
func1
;begin
SaveExit := @DLLProc;
DLLProc := @LibraryProc;
DataModule1 := TDataModule1.Create(nil);end.调用者是VC写的程序,动态调用,先LoadLibrary, 然后调用func1, 最后Freelibrary. 但是在Freelibrary的时候死循环,程序退不出来。 跟DLL的代码,也是在LibraryProc走完后就死掉了。
begin
{Library exit code }
if Reason=DLL_PROCESS_DETACH then
begin
DllProc := @SaveExit ;
DataModule1.Free;
end;
end;exports
func1
;begin
SaveExit := @DLLProc;
DLLProc := @LibraryProc;
DataModule1 := TDataModule1.Create(nil);end.调用者是VC写的程序,动态调用,先LoadLibrary, 然后调用func1, 最后Freelibrary. 但是在Freelibrary的时候死循环,程序退不出来。 跟DLL的代码,也是在LibraryProc走完后就死掉了。
DataModule1 := TDataModule1.Create(nil);finalization
DataModule1.Free;