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

델파이 Q&A
Delphi Programming Q&A
[11580] 감사합니다..
정유수 [yousoo] 2045 읽음    2007-11-07 15:42
정말 자세한 답변 감사합니다.

저도 디렉토리 설정이 잘못되어 있을 것 같다는 감만 대충 잡았었는데..

어디서 수정을 해야 할지 막막했는데,

정말 자세히 설명해 주셔서 너무 너무 고맙습니다.

감사합니다.


박지훈.임프 님이 쓰신 글 :
: 제가 먼저 쓰기를, 디렉토리 설정이 달라서 바꿔줬다, 라고 했었죠...? 바로 같은 이유입니다.
:
: ZDbc.dpk(31): E2202 Required package 'ZPlain' not found
:
: 이 에러의 의미는, ZDbc.dpk 패키지 프로젝트 안에 requires로 ZPlain.dcp가 명시되어 있는데 ZPlain.dcp 파일을 찾지 못했다는 의미입니다. 이 경우에 ZDbc는 ZPlain에 종속되는 구조인데요. (ZPlain.dcp가 없으면 ZDbc를 컴파일할 수도 없으니까요)
:
: ZDbc 프로젝트에서 ZPlain 패키지를 requires하는 이유는 분명 ZPlain에 포함된 유닛들의 기능 일부를 ZDbc에서 필요로 하기 때문입니다. 이것까지 아실 필요는 없겠지만, 이런 경우에 reuqires로 해놓지 않으면 암시적으로 (implicitly) ZDbc 패키지에도 해당 유닛이 함께 포함되게 됩니다. 이렇게 되면, 같은 유닛에 포함된 같은 이름의 같은 컴포넌트, 클래스 등이 두 패키지에 포함되어서 델파이 내부의 주소 공간에서 충돌을 일으키므로 먼저 호출된 것만 로드되고 다른 것은 로드가 안되게 됩니다. 런타임 에러에서 이런 상황을 보신 적이 있을 겁니다.
:
: 이런 이유로, requires에서 다른 패키지를 지정하면 해당 유닛을 직접 자기 패키지에 포함시켜버리는 대신 requires로 지정된 패키지를 로드해서 거기에 포함된 기능을 호출해서 쓰게 됩니다. 이것이 패키지들 사이에 requires 구조인데, 기본적으로 하나의 컴포넌트 라이브러리가 몇개 이상의 패키지로 나눠져 있을 경우에는 거의 항상 그 패키지들 사이에 requires 관계가 엮여 있다고 보시면 됩니다. 예를 들어 한 컴포넌트 라이브러리의 런타임 패키지는 항상 디자인타임 패키지를 requires합니다.
:
: 썰이 길었는데, 다시 설명하지만 위의 에러 메시지는 ZDbc의 기능이 돌아가기 위해 필요한 일부 기능이 ZPlain에 포함되어 있어서 ZPlain을 로드하도록 requires로 선언해놨는데, ZPlain.dcp 파일을 못찾아서 컴파일을 할 수 없다는 뜻입니다. .dcp 파일은 해당 패키지를 다른 패키지에서 정적 바인딩 링킹할 수 있도록 하는, C++에서의 임포트 라이브러리 .lib 파일과 같은 역할을 합니다. 따라서 패키지들 사이의 requires 관계에서는 requires로 선언된 패키지의 dcp 파일이 없으면 해당 bpl 파일을 로드할 수가 없게 됩니다.
:
: 그러면, 왜 못찾았는지 하나씩 생각해봅시다.
:
: 둘중의 하나입니다. dcp 파일은 원래 없는 것을 컴파일 과정에서 만드는 것이므로, 1. 엉뚱한 위치에 만들었거나, 2. 제 위치에 만들었는데 제대로 못찾았거나, 두가지 중의 하나입니다.
:
: dcp 파일을 찾는 위치는 dcu 파일을 찾는 위치와 같습니다. 델파이 설정의 전역적으로 적용되는 위치는 델파이 메인 메뉴에서 Tools -> Options 다이얼로그에서 Library - Win32 페이지의 Library Path 설정입니다. 그리고 각 프로젝트마다 프로젝트 옵션의 Directories/Conditionals 페이지에 있는 Search Path 설정을 지정하면 해당 프로젝트에만 지정된 패스가 추가로 적용됩니다.
:
: dcp 파일이 생성되는 위치는 다음과 같습니다. 모든 패키지 프로젝트에는 bpl이 생성될 디렉토리와 함께 dcp가 생성될 디렉토리를 지정해줄 수 있습니다.  프로젝트 옵션에서 Directories/Conditionals 페이지를 보시면 DCP output directory라는 설정이 있습니다. 지금 문제가 된 것은 ZPlain의 dcp 파일이므로 프로젝트 매니저에서 ZPlain100 프로젝트를 오른쪽 클릭해서 가장 아래의 Options를 클릭해서 프로젝트 옵션을 띄워서 설정을 확인해봅시다.
:
: 아마 $(BDSPROJECTSDIR)\bpl 이렇게 되어 있을 겁니다.
:
: 이 설정이 문제의 핵심입니다.
: 이 값은 DCP output dir의 기본값이긴 한데, 델파이 2007의 기본값이 아니라 델파이 2006의 기본값입니다. 여기서 설정된 값이 Tools -> Options 다이얼로그의 Library Path에도 지정이 되어 있어야 하는데, 델파이 2006에서는 dcp 기본 output 디렉토리니까 당연히 이 값이 추가되어 있지만, 델파이 2007에서는 다른 값, 즉 $(BDSCOMMONDIR)\Dcp 이 등록되어 있습니다. 이 $(BDSCOMMONDIR)\Dcp 값이 델파이 2007의 기본 dcp output dir입니다.
:
: zeos의 모든 패키지들의 프로젝트 옵션에서 dcp output dir 값이 $(BDSPROJECTSDIR)\bpl 로 잘못(?) 지정되어 있는데, 그 이유는 간단합니다. 오픈한 패키지가 델파이 2007용 패키지가 아니라 델파이 2006용이기 때문입니다.
:
: ZeosDbo 6.6.1 Beta에는 델파이 2007용 패키지는 준비되어 있지 않고 델파이 2006용만 있습니다. 그러니까 정유수님도 이 델파이 2006용 패키지를 열어서 컴파일하셨을 겁니다. 그러니까 델파이 2006에서 저장된 프로젝트 옵션의 기본값이 그대로 저장되어 있는 겁니다.
:
: 해결책은? 간단합니다. 모든 패키지(총 6개군요)의 프로젝트 옵션에서, 프로젝트 옵션의 Directories/Conditionals 페이지를 열어서 DCP out directory 설정을 그냥 날려버리면 됩니다. 빈 상태로 두면 델파이가 알아서 기본 디렉토리를 이용합니다.
:
: 혹은, 더 간단한 방법도 있습니다. Tools -> Options 다이얼로그의 Library - win32 페이지의 Library Path 설정에 $(BDSPROJECTSDIR)\bpl 값을 추가해버리는 방법입니다. 결과는 똑같습니다.
:
: 답은 간단한데 너무 장황하게 설명했지요? 하지만 컴포넌트 설치에 필요한 중요한 내용이고, 또 이런 배경을 알아두셔야 향후에 컴포넌트 설치하다가 문제가 생겨도 스스로 해결할 수 있는 능력이 생기시리라 생각되어서 나름대로 열심히 설명해봤습니다.
:
: $(BDSPROJECTSDIR) 값과 $(BDSCOMMONDIR) 값이 뭘 의미하는지, 어디인지 어떻게 바꾸는지 등등에 대한 내용도 알려드리면 좋겠지만, 이미 너무 장황해져서 더 설명하지 않겠습니다. 다만, 알아두면 개발 생활에 이롭다는 것만 말씀드립니다. ^^
:
: 그럼...
:
:
: 정유수 님이 쓰신 글 :
: : 죄송합니다. 에러 내용을 안적었네요..
: :
: :
: : ZCore100.bpl, ZPlain100.bpl, ZParseSql100.bpl, ZDbc100.bpl,    ZComponent100.bpl, ZComponentDesign100.bpl 등의 파일들을
: :
: : build all projects 를 돌렸더니
: :
: : [DCC Error] ZDbc.dpk(31): E2202 Required package 'ZPlain' not found
: :
: : 가 뜹니다.
: :
: : 이 에러는 무시하여도 되는건가요?
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : 무슨 팁이 필요한지 잘 모르겠습니다만...
: : : ZeosDbo 6.6.1 Beta 버전을 지금 제가 사무실에서 사용중인 델파이 2007 프로페셔널에 설치해봤습니다만, 디렉토리 설정이 제 환경과 달라서 디렉토리들만 조금 바꿔주니 잘 컴파일되고 설치되더군요.
: : : 에러가 발생한다면 그 에러 메시지를 자세히 말씀해주셔야 문제를 짐작할 수 있지 않을까 싶습니다.
: : :
: : : 그럼...
: : :
: : :
: : : 정유수 님이 쓰신 글 :
: : : : 델파이 2006에서 zeos 컴포넌트를 인스톨 하는 팁이 있길래 그대로 따라 했더니
: : : :
: : : : 에러가 발생하면서 과정이 중단되는군요.
: : : :
: : : : 운영체제를 비스타를 이용하기 때문인가도 싶고..
: : : :
: : : : zeos는 가장 최근 버전을 이용할려고 합니다만.
: : : :
: : : :
: : : : 혹시 델파이 2007에서 zeos 인스톨 성공하신 분은 안계신가요?
: : : :
: : : : 방법을 좀 알고 싶습니다.

+ -

관련 글 리스트
11570 델파이 2007에서 zeos 컴포넌트 인스톨하기... 정유수 2108 2007/11/07
11574     Re:델파이 2007에서 zeos 컴포넌트 인스톨하기... 박지훈.임프 2343 2007/11/07
11575         Re:Re:에러 내용. 정유수 1965 2007/11/07
11576             Re:Re:Re: E2202 Required package 'xxxx' not found 박지훈.임프 5353 2007/11/07
11580                 감사합니다.. 정유수 2045 2007/11/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.