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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[984] TurboC++ 2006 Explorer에서 폼에 3rd Party Component 얹은 소스 컴파일하기.
김태선 [cppbuilder] 7878 읽음    2010-05-15 23:48
기본적으로 TurboC++ 2006 Explorer은 3rd Party Component 설치를 허용하지 않기 때문에
IDE 상에서 이를 이용한 컴파일은 불가능하다.
이를 가능하게 하는 손쉬운 방법이 있다는 이야기가 있지만 그것은 여기서 논할 성격의 문제가 아니다.

여기서는 TurboC++ 2006 Explorer가 제공하는 커맨드라인 컴파일러를 이용해서 정당한 방법으로
제 3자 컴포넌트를 사용하는 소스를 컴파일하는 방법을 간단히 설명한다.

TurboC++ 2006 Explorer가 컴포넌트 설치를 허용하지 않기 때문에 외부 컴포넌트를 이용한 화면의
직접 디자인은 안된다. 그러나 동적으로 생성해서 사용하는 것은 아무런 문제가 없다.
이렇게 하는 방법은 다들 아는 방법이지만 개발자에 따라 좀 귀잖게 생각될 수도 있다.
폼 디자인은 CBuilder 6 같은 다른 버전에서 하고(여기서는 설명의 편의를 위해 CBuilder 6로 한정한다),
다만 컴파일만 TurboC++ 2006 Explorer에서 하게 되면 결과물인 실행 파일 같은 것을 얻을 수 있다.

간단히 CBuilder 6에서 외부 컴포넌트를 사용해서 화면을 디자인하고 프로그램을 만들었는데,
최종 컴파일만 TurboC++ 2006 Explorer 다시해서 릴리즈 하는 방법을 말하는 것이다.
즉 소스 작성 및 테스트는 CBuilder 6에서 하고 릴리즈만 TurboC++ 2006 Explorer를 이용하는 방법이다.
배포시 편의를 위해 Standard Alone 형식을 사용하는 것을 기준으로 한다. 즉 Dynamic RTL 사용하지 않고
Package 사용하지 않는 모드로 거의 대부분 개발자가 사용하는 릴리즈 형식이다.

먼저 준비해야 할 것은 사용한 컴포넌트의 BDS 2006용 파일(TurboC++ 2006 Explorer는 여기에 포괄되어 있다)이다.
CBuilder 6에서 컴파일한 컴포넌트 파일은 최종적으로 lib 파일로 생성되므로 이를 준비해야 한다.
보통 컴포넌트 패키지 프로젝트 파일인 *.bpk 를 컴파일하면
C:\Documents and Settings\master\My Documents\Borland Studio Projects\Debug_Build
같은 곳에 최종 컴파일 파일이 생성되므로 이를 준비한다.

다행히 *.bpk 파일은 대부분 조금 조정하면 IDE 상에서도 컴파일 된다. 설치는 안되도 컴파일은 지장이 없다.
컴포넌트를 BDS 2006용으로 컴파일해서 준비해 두는 이유는 obj 포멧과 그 속 내용이 CBuilder 6와
조금 차이가 있기 때문에, 컴포넌트를 빌더 개발툴 에디션별로 컴파일을 다시해 설치하는 것과 같은 맥락이다.

이제 제작한 소스를 컴파일해야 하는데, 여기에 필요한 것은 커맨드라인 컴파일러인
bcc32.exe 와 링커은 ilink32.exe 이다.
이는 TurboC++ 2006 Explorer 설치하면 bin 폴더 안에 들어 있으므로 이를 그대로 이용하면 된다.
커맨드라인 컴파일러에서는 외부 컴포넌트 사용 및 링크 등에 대한 제약이 없다.
그래서 그냥 컴파일 링크 하는 방법만 알면 되는 것이다.

이제 프로젝트에 있는 소스를 컴파일하면 된다.
먼저 소스 컴파일만 하고, obj 가 생성되면 그 다음 링크한다.
이를 한번에 처리하는 방법도 있지만 여기서는 두번에 나누어 처리하는 방법을 설명한다.
이 쪽이 필요한 모듈을 다시 컴파일하기 편리해 오히려 간편하기 때문이다.

첨부한 z.bpr 프로젝트 예제 파일에는 두개의 소스 파일이 있다.
z.cpp unit1.cpp
z.cpp는 보통 프로젝트 메인함수쪽 소스 파일이고, unit1.cpp는 우리가 흔이 다루는 폼을 가진 소스다.
예제에서는 unit1.cpp 내에 외부 컴포넌트인 dxButton을 사용해 CBuilder6에서 디자인과 코딩을 했다.

bcc32 -c -Id:\compo\bds2006 unit1 z

이렇게 하면 unit1.obj z.obj 가 생성된다.
-I는 컴포넌트 소스가 있는 폴더를 가르킨다. 기본 include 외의 소스가 있는 폴더를 지정하는 것이다.

다음은 TurboC++에 있는 기본 obj 와 lib를 포함하여 자신이 제작한 unit.obj z.obj 를 링크해서
최종적으로 z.exe를 생성하면 된다.

ilink32  -aa -Tpe -Gn -v -L"C:\Program Files\Borland\bds\4.0\lib;C:\Program Files\Borland\bds\4.0\lib\obj;C:\Program Files\Borland\bds\4.0\lib\release;d:\compo\bds2006"  c0w32.obj sysinit.obj z.obj unit1.obj,z,,cp32mt.lib vcl.lib rtl.lib import32.lib dxPackage2.lib,,z.res unit1.dfm

이렇게 하면 간단히 z.exe 최종 파일이 만들어 진다.
라이브리리가 있는 패스 지정해 주는게 좀 길긴해도
기존 startup 파일인 c0w32.obj 와 sysinit.obj가 필요하고
여기에 자신이 제작한 z.obj 와 unit1.obj 를 더해서
TurboC++에서 제공하는 기본 라이브러리와 컴포넌트 라이브러리를 지정하면 되는데
제공되는 라이브러리인 cp32mt.lib vcl.lib rtl.lib import32.lib 과
사용된 외부 컴포넌트 dxPackage2.lib 를 지정한다.(사용되는 라이브러리는 사용한  기본 컴포넌트나 라이브러리 함수에 따라 추가 되는데 이는 재주껏 확인하면 된다.)
그리고 리소스 파일 z.res unit1.dfm 같이 링크해주면
최종적으로 z.exe 파일을 얻을 수 있다.

첨부된 예제는 CBuilder 6에서 제작 컴파일 테스트까지 하고
TurboC++ 2006 Explore에서 Build만 다시 한 것이다.
dxPackage2.lib는 dxButton 컴포넌트를 BDS 2006에서 컴파일한 결과 lib 파일이다.

TurboC++ 2006 Explorer 완전 무료이면서도, 상용 프로그램 제작까지
어떤 제약도 없으므로 개발자 입장에서는 매우 유용한 개발툴이라고 할 수 있으며
이는 현장에서 매우 유효적절하게 사용될 가능성이 많다.
간단한 파일 하나 컴파일해서 구성요소로 넣어야 하는데,
VC로 하기는 좀 귀잖고 할때 이런 방법을 쓸 수도 있을 것이다.

이 외 TurboC++ 2006 Explorer 활용하는 방법은 많은데,
무조건 설치해두면  유용하다.


참고로, 컴파일 할때 옵션은 -c -L 정도 지정했는데 이렇게 하면 많은 warning을 만나게 되는데
이를 IDE 수준으로 줄여서 보고 싶으면
-D_DEBUG -DNO_STRICT -H=$(BDS)\lib\vcl100.csm -Hc -X- -w-par -Od -Vx -Ve -r- -b- -k -y -v -vi- -tWM -tW -c -ID:\Borland\CBuilder6\Projects;D:\Project\CB6_TurboC;"c:\program files\borland\bds\4.0\include";"c:\program files\borland\bds\4.0\include\vcl";d:\compo\install;"c:\program files\borland\bds\4.0\include\dinkumware";"c:\program files\borland\bds\4.0\Include\Indy9";"c:\program files\borland\bds\4.0\Lib\Indy9";"C:\Program Files\Borland\BDS\4.0\source\ToolsAPI"
가 기본 컴파일 옵션이므로 이를 적정하게 필요한 부분을 취하면 된다.


위 방법을 잘 응용하면
전체적으로 TurboC++ 2006 Explorer IDE 상에서 개발하고
폼만 CBuilder 6로 만들어 이를 TurboC++ 2006 Explorer에 붙여서 개발하는 것도 가능할 것이다.
즉 폼 소스만 커맨드 라인 컴파일을 이용하고
최종 빌드는 TurboC++ 2006 Explorer IDE 상에서도 가능하다는 것이다.
이렇게 하려면 약간 손을 더 봐야 겠지만, 그건 관심있는 분들이 각자 알아서 시도해 보시기를.
중요한 것은 폼 소스는 컴파일하면 가령 unit2.cpp 와 unit2.dfm 이 합쳐서 unit2.obj 가 생성된다는 것이다.


그럼.

+ -

관련 글 리스트
984 TurboC++ 2006 Explorer에서 폼에 3rd Party Component 얹은 소스 컴파일하기. 김태선 7878 2010/05/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.