안녕하세용... 델초입니당...
검색해보니.. 비슷한것이 있긴 하지만.. 해결책을 찾기란 쉽지않군요...
이리저리.. 이것저것도 해봤는데여.. ㅡㅡ;
DLL안에는 폼이 한개있습니다.. 자체적으로 Indy컴포넌트 몇개와.. ActionList와
리스트뷰.. 등등..이죠.. 문제는 호스트폼(DLL폼을 호출하는 폼)에서.. DLL폼을
모달리스로 호출을 합니다.. 물론 제대로 실행은 됩니다..
멋드러지게 뜨더군요.. ㅡㅡ;.. 하지만.. 이 DLL폼들을 닫은 후에... 그리고
호스트폼을 제거한 후에도 제대로 메모리가 해제되지 않습니다. 결국 Access Violation
을 내고 말더군요..
DLL폼을 호출하는 함수입니다..
// Dll 내의 구현 부분
function CreateForm( ParentApplication: TApplication;
ParentForm: TForm;
Info: TLoginInfo ): HWND; export; stdcall;
var
cf : TClientForm;
begin
cf := TClientForm.Create( ParentForm );
cf.LoginInfo.Assign( Info );
cf.Show;
cf.Connect;
result := cf.Handle;
end;
정리해보면..)
만든 DLL을 동적링크시켜서 실행시키니, 모든 ClientForm을 닫은(OnClose에서
caFree하였습니다) 후에도 메모리가 제대로 해제되질 않습니다. FreeLibrary할때에,,
Access Violation이 납니다. 델파이 데이타타입을 사용하는가 해서
ShareMem을 추가시켜도 보았습니다.
그래도, 소용없더군요..