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

컴포넌트/라이브러리
Delphi/C++Builder Programming Components&Libraries
[782] TComPort 4.1 / CPort [설치방법 포함]
송신영 [palindrome] 36790 읽음    2012-02-23 19:56
* 첨부파일 출처 : http://sourceforge.net/projects/comport/?source=directory

델파이는 XE까지 기본 지원이지만 C++ Builder는 6.0 까지 지원하는데 아래 설치 방법 참고하시면
빌더도 XE까지 설치 가능합니다. (설치 방법은 기존 버전 설치하는 거나 크게 다르지는 않은것 같습니다)

* 설명 출처 : http://kenzuro.tistory.com/191

Kenzuro 님의 블로그에서 가져왔습니다.
(허락없이 가져와 죄송합니다. ^^;;)

===================================================================================
CPort는 델파이 XE까지 지원하지만 C++ Builder에서는 6.0까지밖에 지원하지 않습니다.
몇가지 시도 끝에 C++ Builder XE에서 사용할 수 있게 되었습니다.

- 순서 -
1. http://sourceforge.net/projects/comport/files/comport/4.11/  해당 사이트로 가서 4.11
버전을 다운받는다. 참고로 저는 4.11f버전을 다운받았습니다.

2. 압축을 풀어주고 C++ Builder가 아닌 Embarcadero RAD Studio를 실행합니다. C++ Builder XE를 실행하지
않는 이유는 프로젝트 파일이 델파이 파일이라 C++ Builder에서는 열리지 않기 때문입니다.

3. RAD를 실행했으면 File - Open Project를 클릭하여 압축을 푼 디렉토리안에 Source에서 CPortLibDXE 파일을
Open합니다.(Tools-Option에서 C++ Options - Package output Directory의 경로를 변경해주어도 됩니다.
참고로 저는 변경하지 않았습니다. 이 경로는 나중에 BPL링크를 걸어줄 때 필요합니다.)

4. Project-Option에서 Output-C/C++ 트리메뉴를 클릭하여 C/C++ Output file generation을 보시면
Generate DCUs only되어 있는 것을 볼 수 있습니다. 이것을  Generate all C++ Builder
file(including package libs)로 변경하여 주고 컴파일을 합니다.

5. 컴파일을 했으면 프로젝트를 닫고 file-Open Project를 하여  DsgnCPortDXE를 Open하고 4번을 똑같이 해 줍니다.
3번의 경로 변경을 해 주셨다면 이것도 같이 변경 하여 줍니다.
  ( 2010의 경우에는 Delphi Compiler > Linling > Linker output 입니다. )

6. 컴파일 & 인스톨을 해 줍니다.
   (2010의 경우 Project Manager에서 해당 프로젝트 이름에서 오른쪽 마우스 클릭하면 팝업 메뉴중에 Install이 있음.)

7. 새 프로젝트를 만들고 tool Palette에서 CPortLib트리메뉴가 있는지 확인합니다. 있으면 설치는 완료 된 것입니다.

8. TComport를 올리고 컴파일을 하면 오류가 나올 것입니다. (안나온다면 전 왜 나온거죠?;;) CPort.hpp파일에서 오류가 날 것이라고 믿습니다. 오류는 EComPort함수가 중복선언 되어 있다고 나오는 것과 이미 선언되어 있다고 나오는 것 두가지입니다.

파일을 열어보면


class DELPHICLASS EComPort;
class PASCALIMPLEMENTATION EComPort : public Sysutils::Exception
{
 typedef Sysutils::Exception inherited;


private:
 int FWinCode;
 int FCode;
 
public:
 __fastcall EComPort(int ACode, int AWinCode);  // <-- 보라색
 __fastcall EComPort(int ACode);               // <-- 보라색

 __property int WinCode = {read=FWinCode, write=FWinCode, nodefault};
 __property int Code = {read=FCode, write=FCode, nodefault};
public:
 /* Exception.CreateFmt */ inline __fastcall EComPort(const System::UnicodeString Msg, System::TVarRec const *Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }

// 주석 처리한 부분
 /* Exception.CreateRes */ //inline __fastcall EComPort(int Ident)/* overload */ : Sysutils::Exception(Ident) { }
 /* Exception.CreateResFmt */ inline __fastcall EComPort(int Ident, System::TVarRec const *Args, const int Args_Size)/* overload */ : Sysutils::Exception(Ident, Args, Args_Size) { }
 /* Exception.CreateHelp */ inline __fastcall EComPort(const System::UnicodeString Msg, int AHelpContext) : Sysutils::Exception(Msg, AHelpContext) { }
 /* Exception.CreateFmtHelp */ inline __fastcall EComPort(const System::UnicodeString Msg, System::TVarRec const *Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext) { }

// 주석 처리한 부분
 /* Exception.CreateResHelp */ //inline __fastcall EComPort(int Ident, int AHelpContext)/* overload */ : Sysutils::Exception(Ident, AHelpContext) { }
 /* Exception.CreateResFmtHelp */ inline __fastcall EComPort(System::PResStringRec ResStringRec, System::TVarRec const *Args, const int Args_Size, int AHelpContext)/* overload */ : Sysutils::Exception(ResStringRec, Args, Args_Size, AHelpContext) { }
 /* Exception.Destroy */ inline __fastcall virtual ~EComPort(void) { }
 
};




위와 같이 선언되어 있습니다.  빨간색 글씨로 되어 있는 부분을 주석 처리 하면 정상적으로 컴파일 됩니다. 또는 보라색 부분을 주석처리 해도 컴파일은 됩니다.
저도 여기서 의문점인게 빨간색과 보라색 둘중 하나가 없더라도 나중에 코딩할때 문제가 되지 않는지에 대한 점입니다. 이건 좀더 찾아봐야 할 것 같습니다. 어쨌건 이렇게 하면 CPort 4.1 설치는 완료되어지게 됩니다.

--- 추가 ---

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=66066

제가 자주 들어가는 포럼에서 문의 한 결과 inline 함수는 주석처리해도 실행하는데 있어 크게 상관 없다고 합니다. 답변해주신 빌더님께 다시한번 감사인사 드립니다. 고로 빨간색만 주석처리 하고 사용하시면 될 것 같습니다.

* CPort.hpp 에 아래 내용 추가 필요.
#ifdef UNICODE 
#define SetPortW SetPort 
#else 
#define SetPortA SetPort 
#endif 

참조 : http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=68413

===================================================================================
Kenzuro [kenzuro83]   2012-07-04 16:17 X
우와 제 블로그가 여기 올라와있다니... 맘껏 퍼가셔도 좋습니다 ㅋ 초보인 제가 누군가에게 도움이 되었다면 좋겠습니다 ㅎ
locke [syiware]   2014-07-14 10:16 X
잘 되는군요..xe5에서 잘 설치했습니다. 오류 안나는데욤..ㅋㅋ

+ -

관련 글 리스트
782 TComPort 4.1 / CPort [설치방법 포함] 송신영 36790 2012/02/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.