라이브러리로 변환해야하는 응용 프로그램이 있습니다. 난 단지 프로젝트 조선 민주주의 인민 공화국을 복사하여 소스 파일을 변경했습니다 ': 당신이 볼 수 있듯이델파이 win32 응용 프로그램을 라이브러리로 변환하고 FreeLibrary를 동결
library aLibrary;
uses
FastMM4,
Forms,
SysUtils,
Windows,
Mainfrm in 'Mainfrm.pas' {Mainform};
{$R *.res}
Procedure DllMain(Reason: Integer);
Begin
If Reason = DLL_PROCESS_ATTACH Then
Begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
ExitCode := 0;
End;
If Reason = DLL_PROCESS_DETACH Then
Begin
Application.Terminate;
MainForm.Free;
End;
End;
Begin
DllProc := @DllMain;
DllProc(DLL_PROCESS_ATTACH);
End.
, 나는 단순히 응용 프로그램 초기화와 관련된 일반적으로 자동 생성 된 코드 라인을 제거 한을하고 DllMain 절차에 넣어 'program'키워드를 'library'로 변경했습니다. dll이 잘로드되고 임베디드 프로그램도 잘 실행되지만 호스트 프로세스에서 FreeLibrary를 해제 할 수는 없습니다. dll은 DLL_PROCESS_DETACH 코드가 무엇이든간에 (이 경우 아무 것도 입력하지 않아도) 멈 춥니 다.
모든 응용 프로그램을 해제하는 적절한 방법은 무엇입니까?
잘 했어. Raymond Chen이 그것에 대해 썼습니다. http://blogs.msdn.com/b/oldnewthing/archive/2004/01/28/63880.aspx – ChristianWimmer