C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[50394] Re:Re:[질문]폼을 포함한 DLL을 로드하여 ... 이번에는 해답에 가까운 답변입니다.
박지훈.임프 [cbuilder] 3189 읽음    2007-08-27 16:12
장성호님이 열혈 추적중이시네요. ^^
알아내신 게 모두 맞습니다.

Runtime packages 설정에 따라 달라지는 이유는 간단합니다.
아시다시피 TApplicatipn 클래스와 Application 객체는 forms 유닛에 포함되어 있습니다. 그리고 이 forms 유닛은 vclXX.bpl 패키지에 포함되어 있구요. (XX는 당근 컴파일러 버전이죠)

Runtime packages를 체크해서 컴파일하면, 해당 실행파일이 실행될 때 vclXX.bpl 패키지가 로드되고, 이 vclXX.bpl 패키지가 로드되는 dll 공유 메모리 주소 공간에 Appllication 객체가 만들어지게 됩니다. 따라서 해당 프로세스의 주소 공간에서 이렇게 Runtime packages를 사용하도록 설정된 모든 dll들이 단일 Application 객체를 공유하게 됩니다.

반면에, Runtime package를 사용하지 않으면 dll 자체에 forms 유닛이 컴파일되어 정적으로 링크되지요. 당연히 dll 하나마다 각각의 Application 객체가 만들어지게 됩니다.

그럼...


: [추신]
:
: 고수님들께 추가질문 드립니다.
:
: Runtime packages 의 check / uncheck에 따라서 Application 객체가 하나일수도 있구
: 둘이 될수도 있던데...
: 왜그런지 정확한 comfile원리와
:  exe가 run될때 , dll이 load될때 어떻게 동작하는지 설명좀 해주실수 있겠습니까?
:
:  미리 감사말씀 드립니다.
:
: 그럼
:
:

+ -

관련 글 리스트
50372 [질문]폼을 포함한 DLL을 로드하여 사용할때 TOpenDialog를 사용하면 안되나요?? 시몬 2133 2007/08/24
50392     Re:[질문]폼을 포함한 DLL을 로드하여 ... 이번에는 해답에 가까운 답변입니다. 장성호 2175 2007/08/27
50394         Re:Re:[질문]폼을 포함한 DLL을 로드하여 ... 이번에는 해답에 가까운 답변입니다. 박지훈.임프 3189 2007/08/27
50386     Re:[질문]폼을 포함한 DLL을 로드하여 사용할때 TOpenDialog를 사용하면 안되나요?? 장성호 2389 2007/08/27
50374     Re:[질문]폼을 포함한 DLL을 로드하여 사용할때 TOpenDialog를 사용하면 안되나요?? 장성호 2385 2007/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.