[C++Builder] File not found: 'Designintf.dcu' 에러 대처법

볼랜드포럼에 올렸던 내용을 블로그에 재게시합니다.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=108

Delphi 로 된 Component 를 설치하다 보면 Dsgnintf.dcu 또는 Designintf.dcu 를 찾을 수 없다는
에러 메시지를 보게 됩니다. 이 에러 메시지가 나는 이유는 무엇일까요?

Component 에는 Design Time 에서 사용하기 쉽도록 Component Editor, Property Editor 가
포함되어 있는 경우가 있습니다. Delphi 에서 Design Time 에 필요한 Component Editor, Property Editor 를
사용하기 위해서는 uses 부분에 Designintf 또는 Dsgnintf 를 사용해야 합니다. 어떤 것을 사용할지는
Delphi 버전에 따라 다르겠지요. Delphi 6 이후부터는 Designintf 를 사용합니다.

C++Builder 에서 사용할 경우 약간 까다로운 문제가 발생합니다.
C++Builder 에는 Delphi Compiler 인 dcc32.exe 와 C++ Compiler 인 bcc32.exe 가 공존합니다.
따라서 패키지 파일인 bpk 파일에 두개의 Compiler를 위한 Option이 따로 있습니다.

bpk 를 Text Editor 로 열어서 그 내용을 보면 다음과 같은 항목이 있습니다.

<CFLAG1 value="-Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c
      -tWM"/>
<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M"/>


CFLAG1 은 C++ Compiler 인 bcc32.exe 를 위한 Option입니다.
PFLAGS 는 Delphi Compiler 인 dcc32.exe 를 위한 Option입니다.

Component 를 C++Builder 로 만들었다면 PACKAGES value 값에 designide.bpi 가 포함됩니다.
<PACKAGES value="rtl.bpi ApLabel_bcb6.bpi designide.bpi vcl.bpi vcljpg.bpi"/>


Delphi 로 Component 를 만들었다면 문제가 발생합니다. Delphi Compiler 인 dcc32.exe 에
designide 패키지를 사용하겠다는 것을 알려주어야 됩니다. 그런데 얄밉게도 Builder 가 알아서
처리하지 못합니다. 따라서 사용자가 수동으로 처리를 해주어야 합니다.

dcc32.exe 의 옵션을 보면 -LU 라는 옵션이 있습니다. 패키지를 사용하겠다는 것을 알려주는
옵션입니다. 이 옵션을 사용자가 수동으로 지정해 줍니다. 다음과 같이 말입니다.

<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M -LUDesignIde"/>

추가하자면, dcc32.exe 가 요구하는 compiled package 는 Delphi 에서 사용하는 designide.dcp 입니다. 요구하는 compiled package 를 추가하고 compile 하면 dcu 가 생깁니다. 이것을 Builder 에서 쓰기 위해서 obj , hpp 로 변환을 하는데 그 때부터는 Builder 용 compiled package 인 designide.bpi 가 필요합니다.

그러므로, designide.bpi 를 추가하는 과정이 또 필요합니다.
만약, bpk 를 직접 만들어야 하는 상황이라면 이런것까지 생각해야 합니다.

요약하자면,
1. pas 를 compile 하여 dcu 를 만든다. (필요한 compiled package 를 수동으로 추가)
2. dcu 를 변환하여 Builder 사용하는 obj, hpp 로 만든다.(이제부터는 obj, hpp 만 사용)
3. obj, hpp 에서 요구하는 compiled package 는 wizard 에서 add 해준다.

즉, Builder 에서는 delphi source 를 dcc.exe 로 compile 하고 , 이것을 변환하여 C++ 에서 이용가능한 형태인 obj, hpp 를 만드는 것으로 VCL을 이용할 수 있도록 하고 있습니다.

dcc.exe 가 있으니 Delphi 대용으로도 쓸 수 있겠구나 할 수도 있지만, IDE 에서 많은 제한을 걸어놓았기 때문에 실제로는 컴포넌트 설치용으로 사용하는 것이 거의 대부분입니다. C++Builder 에서 Delphi Project 까지 자유롭게 사용할 수 있다면 Delphi 판매가 줄어들테니 그런짓은 하지 않겠죠.