|
C++Builder로 Dll을 만들고
프로그램에서 Dll을 LoadLibrary할때 dll의 DllEntryPoint 호출에 대해서 질문드립니다.
이상하게 어떤때는 DllEntryPoint 가 호출되고 어떤때는 DllEntryPoint 가 호출이 안되는것 같아서요
BCB로 exe만들고
Dll1은 BCB로 만들고
Dll2는 Delphi로 만들었습니다.
------------Dll1 코드---------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
MessageBox(NULL,"BCBDll DllEntryPoint","확인",0);
return 1;
}
------------Dll2 코드---------------------------------------
begin
MessageBox(0, PChar('DelphiDll DllEntryPoint'), '확인', 0);
end.
bcb로 만든 exe에서 Delphi로만든 Dll2를 LoadLibrary하면 MessageBox가 반드시 뜹니다.
그런데 bcb로만든 Dll1을 LoadLibrary하면 MessageBox가 뜨지 않습니다.
왜그렇죠?
여러가지로 테스트결과 BCB에서 DLL을 Compile할때 Runtime packages를 uncheck하고
compile하니 BCB로 만든 dll도 LoadLibrary 할때 DllEntryPoint가 호출되더군요
Runtime으로 할경우 exe에서 vcl60.bpl이 이미 load되어있으므로
dll을 load할때 EnteryPoint를 호출하지 않는것인지요?
질문1
BCB에서 dll EnteryPoint 호출 방식에 대해 궁금합니다.
질문2.
위에랑 같은 질문인데요
vb로 exe만들고 vb에서 bcb로 만든 dll을 썼었는데요
이상하게 DllEntryPoint가 여러번 호출되더라구요
사용하는 dll은 하나이구 함수가 여러가지일뿐인데..
새로운 함수 호출때마다 한번씩 호출되는것 같기두 하구...
답변 미리 감사합니다.
|