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
[44759] Re:Re:Re:Re:Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법?
둘리 [dooly386] 1578 읽음    2006-05-04 21:46
VS(Visual Studio) 에서는 없는 개념(없다는건 아니고 다른이름이죠) 이라 VS진영에서 넘어오신 분들은 처음에 당혹해 하는 부분입니다만..
borland 는 (물론 C++ Builder와 Delphi) 에서는 VCL 이라는 라이브러리를 사용합니다.
VCL 은 VC++ 에서 MFC 정도라고 할까요? 사실 Windows API를 가지고 Windows Application 을 만드는것은 여간 복잡한(나름대로 익숙하면 그렇지만은 않은) 과정이 많아 이를 단순화 시킨게 MFC라면 VCL도 이러한 관점과 같습니다. 사실 VCL 은 Borland 의 오래전의 OWL(정확한지 기억이 가물가물) 에서부터 유래 합니다.
즉 Windows 의 여러가지 콘트를들을 Visual 하게 작업할 수 있도록 만들어서 제공하는 라이브러리가 VCL입니다.
이러한 VCL의 주축은 Package Library 에서부터 출발 합니다. VC++에서 DLL 을 만들어 사용하듯이 borland에서도 물론 DLL을 사용할 수 있습니다.. 또한 VCL 이라는 package library 를 사용하고 있습니다. 이러한 package 라이브러리를 만들어 주는 프로젝트가 package library 프로젝트 입니다. 이렇게 만든 프로젝트의 결과물이 바로 bpl 파일 입니다. Borland Package Library 의 약자 이죠.
즉 VC++ 에서 DLL project를 하면 결과가 dll 이 나오듯이 borland의 package library project를 컴파일 하면 바로 bpl 이 나옵니다.
우리가 흔히 component 라고 판매하거나 아니면 다른사람이 만든것을 가져다 쓸수 있는 구조가 바로 bpl 입니다.
그러나 bpl 만 있으면 사실 프로그램에 직접 가져다 같이 컴파일 할 수 없습니다.
DLL 파일을 우리가 사용할려면 사실 DLL 에 있는 함수가 어떤것이 있는지를 선언해주는 header가 같이 있어야
우리의 코드에 적용할 수 있는 이치와 같이 bpl 도 header 가 있어야 합니다.
이러한 bpl을 가져다 다른프로그램에 접목시켜 프로그래밍을 하려면 bpi 파일과 header 파일이 있어야 합니다.
또한 bpl 에 만약 폼(Form) 이 같이 포함되어 있으면 해당 dfm (Design Form 의 약자인지 사실 Delphi Form의 약자인지는 혼동) 파일도 같이 있어야 합니다.
우리가 어떠한 판매되는 package library(component 라고 흔히 합니다) 를 구입하면 source code수준까지 구입하지 않을경우 바로 bpl + bpi + dfm 이 같이 들어 있습니다.

그리고 실제 실행파일을 실행하는 환경에서는 bpl 만 있으면 됩니다. (bpi 및 dfm 은 개발자 환경 파일이라 생각하면 됩니다).

Install 이라는것은 package library 즉 bpl 파일을 BDS (BCB6 나 그전도 마찬가지) 에 등록해야 사용할 수 있습니다. 이를 Install Package 라고 합니다. 즉 package library를 BDS에 등록하는 것이죠 프로그램에 쓸수 있도록.

C# 으로 .NET 환경에서 프로그래밍 하신 경험이 있으시면 .NET Assembly 라는 용어를 들어 보셨으리라 생각 합니다. bpl 은 이런 Assembly 와 같은 개념이라 생각하시면 됩니다.

제 생각에는 C# 은 바로 언어구문은 C , C++, Java 구문을 많이 따르고, 소스 파일 구문은 Delphi Pascal 을 많이 따르고(Header 를 사용하지 않고 using 문을 쓰는점에서)  Assembly 개념은 bpl 을 많이 따른 그야말로 장점을 모아 모아 만들긴 한거 같습니다...(그렇다고 만능은 아니고요)

Visual Studio (C#의 경우) 는 ActiveX 나 COM 을 직접 참조하여 프로그래밍 할수 있습니다. .NET 환경에서도 마찬가지고요... 그러나 C++ Builder에서는 이를 직접 사용하지 못합니다.

앞에서 우리가 ActiveX 에서 몇개의 C++ 파일을 BCB 에서 자동으로 만들어 주는 과정을 거쳤습니다.
여기에서 만들어지는것은 몇가지 C++ 와 바로 Type Library 라는 것을 만들어 줍니다. Type Library 라는것은
그전의 object 파일이 어떤 컴파일러든 링크 가능하던 시절이 지나고 서로 호환을 갖지 못하게 되었으며 이로 인해
MS에서는 type library라는 것을 제공하게 됩니다.
type library 는 간단히 말하면 어떤 코드(라이브러리 코드 , 컴파일된 object code 라 생각할 수 있죠) 를 외부에서 사용할때(LINK 할때) 연결하는 규칙이라 생각하시면 됩니다.  OLE 프로그래밍을 해보셨으면 아마 이러한 작업을 했던 경험이 있으실 겁니다.
Property 와 Method 를 만들어 붙이는 것이죠..

즉 BCB 는 ActiveX에서 이러한 소스코드와(실제 소스코드가 아니고 해당 active x에 연결하는 구조) 와 type library 를 만들어 내는 것입니다.

이렇게 만든 코드를 package 라이브러리로 만들어서 바로 bpl을 만들어 주면 BCB 나 BDS2006에서 사용할 수 있는 것 입니다.

처음 접하시는 분들은 좀 어려운 부분이기는 하나.. 매우 중요한 부분으로 Borland 툴의 우수한 기술력이라고 생각 합니다.

OCX를 이용하면 많은 부분을 처리할 수 있습니다. OCX는 기존의 DLL보다는 진일보한 인터페이스를 제공하고 있으니까요..
가령 Acrobat Reader를 자신의 폼에 배치하여 사용할 수도 있습니다.

지금으로서 (.NET을 제외하면) Borland 와 VS 와 연결 창구는 ActiveX 밖에 없는것 같습니다.

수고 하세요...




와이 님이 쓰신 글 :
: 둘리님....
:
: 정말 감사, 감사!!!
:
: 말씀하신대로 하니... ActiveX category 에 OCX 가 떠~억 나타나네요...
:
: ...VC++ 하던대로 그냥 마구 해보려니 다른 게 많군요....
:
: 다시 한번 감사 말씀 드립니다.
:
: 그리고... 혹 시간 되시면,
: package / bpl / install 등의 개념에 대해 간단한 말씀 부탁드립니다.
:
: 둘리 님이 쓰신 글 :
: : 앞에 방법으로 C++ 코드 만드셨죠?
: : 기본적으로 BDS의 Imports 인가 거기에 생성 되는데.. 생성하실때 다른데 생성 하셔도 됩니다.
: : 일단 그렇게 만드시면  ???_TLB.cpp,??? _OCX.cpp 등 cpp 관련이 2개 생성 됩니다.
: : BDS에서 새로운 package library 프로젝트를 하나 만드셔서 앞에서 생성한 cpp 파일 추가 하셔서
: : package compile link install 하시면 됩니다.
: : ActiveX 는 자동으로 컴포넌트 install 되면 생성 됩니다.
: :
: : BDS 가 ActiveX에 대하여 보다 현실적으로 수정하였군요.. BCB6 는 기본으로 항상 dclusr 에 들어가서..
: : 능숙한 사용자가 아니시면.. 곤란한 상황도 있었는데...
: :
: : 성공하시길 빕니다.
: :
: :
: : 와이 님이 쓰신 글 :
: : : 먼저.. 감사...
: : :
: : : 근데.. 말씀하신 것들을 다 했는데...
: : :
: : : Tool palette 에 새로 import 한 ocx 가 떠억하니 보여야 하지 않나요?
: : : 그래야 폼에 밀어 넣을 수 있을텐데...
: : :
: : : 수고수러우시겠지만...
: : : 그 다음 과정을 조금 더.. 상세히 적어주시면 고맙겠습니다.
: : :
: : : 그리고...
: : : Tool Palette 에 ActiveX 라는 카테고리가 보이지 않네요.
: : : 어떻게하면 이게 보이나요?
: : :
: : : 참고로... BDS2006 에서 C++ Builder 를 공부하고 있습니다.
: : :
: : : 둘리 님이 쓰신 글 :
: : : : 메뉴에서요
: : : : Component->Import Component 실행해서요
: : : : Import ActiveX Control 선택하시고
: : : : 진행하시면 됩니다. 그다음은 BCB6 와 비슷하군요..
: : : :
: : : : 수고하세요.
: : : :
: : : : 와이 님이 쓰신 글 :
: : : : : 안녕하세요....
: : : : :
: : : : : 초보 Build-er 입니다.
: : : : :
: : : : : 제목과 같이,
: : : : : VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법을 알려주시면 감사하겠습니다...

+ -

관련 글 리스트
44753 VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 와이 968 2006/05/04
44754     Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 둘리 1111 2006/05/04
44755         Re:Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 와이 1045 2006/05/04
44757             Re:Re:Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 둘리 1087 2006/05/04
44758                 Re:Re:Re:Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 와이 1006 2006/05/04
44759                     Re:Re:Re:Re:Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 둘리 1578 2006/05/04
44762                         Re:Re:Re:Re:Re:Re:VisualC++ 에서 만든 OCX 를 BDS2006 에서 사용하는 방법? 와이 1034 2006/05/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.